오라클 백업 및 복구(백업 및 복구란)

1. 데이터베이스 운영모드 가. NOARCHIVELOG MODE – RedoLOG Group에 LOGSWITCH가 발생해도 복사본을 생성하지 않고 재사용하는 방법 – Redolog 파일이 overwrite 되면 중간의 변경데이터 redolog 파일이 사라지므로 최종백업 파일 이후 데이터는 손실된다. – 백업을 위해서 서버를 shutdown 해야한다. 나. ARCHIVELOG MODE – RedoLOG Group에 LOGSWITCH가 발생하면 다른 리두로그파일을 사용하기 전에 복사본을 저장하는 방법 – Redolog를 재사용하기 전에 복사본을 저장하므로 디스크 사용량이 2배가 됨 – 복사본이 존재하는 한 모든데이터를 복구 할 수 있다. – 데이터베이스가 OPEN 상태에서도 백업이 가능하다(shutdown 상태에서도 가능) 2. 복구(recovery) 과정 가. 사용자의 명령(recover) 또는 Smon에 의해 복구시작 나. Control파일의 SCN과 Datafile의 SCN 비교 다. 만일 SCN 번호가 서로 다르다면 장애가 발생한 것으로 인식 (SCN이 같다면 데이터는 무결한 것이므로 NORMAL OPEN 된다) 라. 데이터파일의 SCN 이후부터 리두로그파일의 SCN번호를 활용하여 복구 시도 (만일 데이터파일 SCN 이후의 리두로그 또는 아카이브파일이 없다면 복구에 실패) 3. NOARCHIVELOG MODE를 ARCHIVELOG MODE로 변경 가. DB종료(shutdown immediate) 나. parameter FILE 수정
log_archive_start=TRUE        #9i버전 이하에서만 사용, 10g에서는 에러발생
log_archive_dest_1='location=/data/arc1'
log_archive_dets_2='location=/data/arc2'
log_archive_format=%s_%t_%r.arc
다. DB MOUNT 단계로 시작(startup mount) 라. ARCHIVELOG MODE 확인 및 변경
ARCHIVE LOG list;
ALTER DATABASE archivelog;
마. DB 오픈(ALTER DATABASE open;)
참고 : log_archive_format %s : 리두로그 SEQUENCE NUMBER %t : THREAD 번호(RAC 이외의 번호는 모두 1) %r : incarnation 번호(같은 생애에 만들어지는 로그파일은 번호가 모두 같다)
참고 : ARCHIVE Hang ARCHIVE REDOLOG FILE을 저장하는 공간이 가득찰 경우, ARCHIVE가 중단되는 동시에 전체 DATABASE가 멈춰버리는 현상, 아래와 같은 방법으로 해결 가능하다
ALTER SYSTEM SET log_archive_dest_state_1=defer;
ALTER SYSTEM SET log_archive_dest_state_1=enable;
ALTER SYSTEM SET log_archive_dest_state_2=defer;
ALTER SYSTEM SET log_archive_dest_state_2=enable;
ALTER SYSTEM ARCHIVE LOG stop;
ALTER SYSTEM ARCHIVE LOG start;
ALTER SYSTEM SWITCH logfile;
4. 백업의 대상 가. DATAFILE 나. control FILE 다. redo LOG FILE 라. parameter FILE / PASSWORD FILE
참고 : SYS계정 접속 시 패스워드 인증설정 $ORACLE_HOME/network/admin/sqlnet.ora 파일에 아래내용 추가 (이 파일이 없을 경우 netca를 통해 이름 지정방법을 설정하면 생성된다) sqlnet.authentication_services=(none)
참고 : orapw 파일이 삭제되었을 때 조치방법 $ orapwd file=$ORACLE_HOME/dbs/orapwtestdb
5. 백업의 종류 가. 물리적 백업 : 데이터베이스를 구성하는 파일들을 그대로 복사하는 방법 – OFFLINE BACKUP(cold backup, closed backup) : 오라클이 shutdown 된 상태에서 os의 copy 명령어를 통해 백업대상 파일을 복사하는 방법, NOARCHIVELOG, ARCHIVELOG 모드 모두 가능 – ONLINE BACKUP(hot backup, OPEN backup, BEGIN backup) : 오라클이 OPEN 된 상태에서 os의 copy 명령어를 통해 백업대상을 복사하는 방법, ARCHIVELOG 모드에서만 사용가능 나. 논리적 백업 : export utility 를 사용해 백업하는 방식으로, 데이터베이스의 논리적정보(스키마, 데이터)를 저장하는 방식 6. 백업의 원칙 가. 정기적으로 cold backup을 받도록 한다. 나. 데이터베이스의 구조적인 변화가 생기기 전에 cold backup를 받도록 한다. 다. 장애 시 recovery까지의 시간이 최소화되도록 백업정책을 세워야 한다. 라. 리두로그 파일은 ARCHIVE 한 후, 추후에는 다른 디스크나 테이프에 복사하도록 한다. 마. 데이터파일의 백업은 운영중인 데이터파일과는 다른 디스크에 보관해야 한다. 바. 컨트롤 파일과 리두로그파일은 다중화한다. 사. 데이터베이스의 구조가 변하게 되면 컨트롤파일을 백업받아야 한다. 7. ONLINE BACKUP 방법 가. 백업할 테이블스페이스 백업모드로 변경
ALTER TABLESPACE users BEGIN BACKUP;
나. 파일 백업(OS 명령어 사용)
!cp $ORACLE_HOME/oradata/testdb/users01.dbf /data/backup/open/
다. 백업한 테이블스페이스 사용모드로 변경
ALTER TABLESPACE users END BACKUP;
참고 : 테이블스페이스의 백업모드 확인(active 상태가 백업중, inactive 상태가 백업종료) SELECT a.file#, a.name, b.status, TO_CHAR(b.time, ‘RRRR-MM-DD:HH24:MI:SS’) AS TIME FROM v$datafile a, v$backup b WHERE a.file#=b.file#;
참고 : ONLINE BACKUP의 원리 – 온라인 백업대상은 DATAFILE, CONTROL FILE에 한정한다. – 테이블스페이스가 백업모드로 변경되면 DBWR은 해당 데이터파일에 쓰기 금지된다. – 백업모드일 경우에 checkpoint가 발생해도 해당 데이터파일에는 저장할 수 없으며, 대신 redo LOG file에 필요 블록을 저장한다 – 백업모드에서는 OS에 의한 COPY명령은 가능하므로 백업을 수행한다. – 백업이 끝나고 테이블스페이스를 다시 원래모드로 환원시키면, DBWR에 의한 데이터파일 액세스가 가능해지며, 이때 OS에 의한 COPY명령을 사용하면 데이터의 무결성이 깨지게 되므로 주의해야한다. – 테이블스페이스의 백업모드가 원래상태로 변경되면 redo LOG에 저장했던 블록의 내용을 다시 데이터파일에 적용하며 모든 백업이 종료된다. – redolog file을 백업할 수 없는 이유는 백업모드에서도 redolog 파일은 계속 사용중이기 때문이다.

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다