오라클 백업 및 복구(Archivelog vs NoArchivelog)

1. 장애의 구분 가. 물리적 장애 : Disk fail, file error 등 나. 논리적 장애 : 사용자의 DML, DDL 실수 등 2. NOARCHIVELOG Mode 와 Archivelog Mode에서의 복구 가. NOARCHIVELOG MODE – 특정 datafile에 장애 발생 시 해당 파일만 offline drop 처리하여 open하거나, 마지막으로 cold 백업했던 데이터파일을 모두 restore 하여 오픈한다. 단, offline drop 처리한 경우 해당 데이터파일만 손실되지만, cold 백업했던 순간으로 모든 데이터파일을 restore 한다면 그 시점부터의 데이터는 모두 손실된다. – 만일 장애 시점에 필요한 데이터가 redolog 파일에 저장되어 있던 상태라면 데이터의 손실없이 복구도 가능하지만 그 가능성은 희박하다. 나. ARCHIVELOG MODE완전복구 : 장애 난 시점까지의 모든 데이터를 복구 – 불완전 복구 : 백업데이터와 장애발생 사이의 시점으로 데이터를 복구 3. 예제 가. NO ArchiveLog에서 장애해결
-- NO ArchiveLog 모드인지 확인
ARCHIVE LOG list;

CREATE TABLESPACE test
DATAFILE '/home/oracle/oradata/testdb/test01.dbf' SIZE 1M;

-- cold 백업 수행
shutdown IMMEDIATE
!cp /home/oracle/oradata/testdb/*.dbf /data/backup/
!cp /home/oracle/oradata/testdb/*.ctl /data/backup/
!cp /home/oracle/oradata/testdb/*.log /data/backup/

startup

-- 장애발생 : 데이터파일 손실
!rm -rf /home/oracle/oradata/testdb/test01.dbf
ALTER SYSTEM SWITCH logfile;
/
/
shutdown ABORT

-- 인스턴스가 내려간 이후 재시작 시도
-- 장애가 발생하여 mount 단계까지만 올라옴
startup

-- restore 수행
!cp /data/backup/test01.dbf /home/oracle/oradata/testdb/

-- 복구를 시도하나 archivelog 파일이 존재하지 않아 복구에 실패함.
-- 아래 명령어도 가능함
-- recover tablespace test;
-- recover datafile '/home/oracle/oradata/testdb/test01.dbf';
RECOVER database;

-- 데이터베이스 open에 실패함
ALTER DATABASE OPEN;

-- 해당 데이터파일을 offline 처리하여 데이터베이스를 open하기로 함
ALTER DATABASE DATAFILE '/home/oracle/oradata/testdb/test01.dbf' OFFLINE DROP;

-- open 시도
ALTER DATABASE open;

-- 상태확인
SELECT status FROM v$instance;
나. ArchiveLog에서 장애해결
-- ArchiveLog 모드인지 확인
ARCHIVE LOG list;

CREATE TABLESPACE test
DATAFILE '/home/oracle/oradata/testdb/test01.dbf' SIZE 1M;

-- test 테이블스페이스 hot 백업
ALTER TABLESPACE test BEGIN backup;
!cp /home/oracle/oradata/testdb/test01.dbf /data/backup/
ALTER TABLESPACE test END backup;

-- 장애 발생
!rm -f /home/oracle/oradata/testdb/test01.dbf

CREATE TABLE abc (no number) TABLESPACE test;

INSERT INTO abc VALUES (111);
INSERT INTO abc VALUES (222);
commit;
SELECT * FROM abc;

-- 장애발생 확인
ALTER TABLESPACE test offline;
ALTER TABLESPACE test online;

-- restore 후에 복구 시도
!cp /data/backup/test01.dbf /home/oracle/oradata/testdb/

RECOVER TABLESPACE test;
-- 아래명령어도 동일한 복구 가능
-- recover datafile '/home/oracle/oradata/testdb/test01.dbf';

ALTER TABLESPACE test online;

-- 데이터 복구 확인
SELECT * FROM abc;
참고 : 백업된 데이터 파일이 없을 경우 복구하는 방법 redolog 및 ARCHIVELOG 파일을 토대로 복구하는 것이므로 ARCHIVELOG 모드일 때 가능하다. 만일 redolog 파일에 복구에 필요한 모든 정보가 저장되어 있다면 NOARCHIVELOG 모드에서도 가능할 수 있으나 가능성이 매우 희박하다.
ALTER DATABASE CREATE DATAFILE '/home/oracle/oradata/testdb/test01.dbf'
AS '/home/oracle/temp/test01.dbf';

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다