본문 바로가기

Oracle DataBase/백업복구 실습

No archive log mode 에서 장애 해결

★ 현재 DB를 No archive log mode 로 변경해야 한다

 

SQL> startup mount

...생략..

SQL> archive log list

SQL> alter database noarchivelog;

SQL> archive log list;

 

 

★ 현재 no archive mode 임으로 열린백업은 받을수 없으므로 shutdown 시킨후

다시 전체백업 받음

 

SQL> startup

SQL> @dd

TABLESPACE         MB FILE_NAME
---------- ---------- --------------------------------------------------
UNDO               10 /home/oracle/oradata/testdb/undo01.dbf
TEST               10 /home/oracle/oradata/testdb/test01.dbf
EXAMPLE           100 /home/oracle/oradata/testdb/example01.dbf
USERS               5 /home/oracle/oradata/testdb/users01.dbf
SYSAUX            250 /home/oracle/oradata/testdb/sysaux01.dbf
SYSTEM            450 /home/oracle/oradata/testdb/system01.dbf

 

SQL> !rm -rf /home/oracle/oradata/testdb/test01.dbf

SQL> shutdown abort;

 

 

SQL> !cp /data/backup/close/test01.dbf /home/oracle/oradata/testdb/

 

SQL> recover database;
Media recovery complete.


SQL> alter database open;

Database altered.

 

SQL> @dd

TABLESPACE         MB FILE_NAME
---------- ---------- --------------------------------------------------
UNDO               10 /home/oracle/oradata/testdb/undo01.dbf
TEST               10 /home/oracle/oradata/testdb/test01.dbf
EXAMPLE           100 /home/oracle/oradata/testdb/example01.dbf
USERS               5 /home/oracle/oradata/testdb/users01.dbf
SYSAUX            250 /home/oracle/oradata/testdb/sysaux01.dbf
SYSTEM            450 /home/oracle/oradata/testdb/system01.dbf

6 rows selected.

 

 

★ 중요한점

no archive mode인데도 불구하고 recover 가 되었다.. 왜그럴까?

이유는 복구하려는 데이터가 온라인 Redo log에 있기 때문에 복구가 된것입니다.

 

만약에 강제로 test01 파일이 삭제가 되고 Redo log를 강제로 log switch를 일으킨다면

이야기는 달라진다

 

DB가 open 되기 위해서는 모든 Data file, control file, redo log file의 checkpoint SCN 정보가 같아야 하는데 Data file 중에서 /home/oracle/oradata/testdb/test01.dbf 파일 하나의 scn 정보가 다르기 때문에 open 되지 않습니다. 

 

★ 해결하는 방법은 2가지

 

일단 /home/oracle/oradata/testdb/test01.dbf 파일을 복구하기 위해서는 Archive log파일이 있어야 하지만 없기 때문에 저 파일은 복구가 되지 않는다. 나머지 파일들만이라도 살려야 하는데 그 방법은 모든 파일의 SCN을 같게 만드는 것이다.

 

=> 모든 파일들을 (data file, control file, redo log file)을 test04.dbf가 삭제 되기전인 백업 파일들을 복원하여 복구하면 되는 것이다 하지만 test01.dbf가 삭제된 이후로의 변경된 모든 데이터도 손실 되기 때문데 결국 복구 되는 것은 아니다

 

=> 다른 방법은 문제가 되는 test01.dbf 만 포기하는 방법이다

    이럴 경우 test01.dbf 에 있던 데이터는 모두 손실되지만 나머지 데이터들은 살릴 수 있다

 

12. 두번째 방법으로 test01.dbf 파일만 offline drop 옵션으로 포기하고 나머지 파일을 살리는 방법이다

  => test01.dbf만 사용하지 않도록 하였기 때문에 DB가 open 된다 

 

SQL>alter tablespace test '/home/oracle/oradata/testdb/test01.dbf' offline drop;