Oracle/Backup & Recovery2010. 4. 17. 12:27
테스트 시나리오 :

핫백업 중에 DB가 강제 종료가 된다면 어떻게 될까?
(alter tablespace XXXX begin backup
  -> !cp /oracle/XXX.dbf /oracle_backup/XXX.dbf
    -> 강제 종료(shutdown abort))


테스트 :

0. 현재 인스턴스명과 상태 확인

SQL> select instance_name, status from v$instance;
INSTANCE_NAME    STATUS
---------------- ------------
orcl             OPEN


1. 테이블 스페이스 단위 핫백업

SQL> select name from v$tablespace;
NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
USERS
EXAMPLE
TEMP

SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/system01.dbf
/u01/app/oracle/oradata/orcl/undotbs01.dbf
/u01/app/oracle/oradata/orcl/sysaux01.dbf
/u01/app/oracle/oradata/orcl/users01.dbf
/u01/app/oracle/oradata/orcl/example01.dbf

SQL> alter tablespace system begin backup;
Tablespace altered.

SQL> !cp /u01/app/oracle/oradata/orcl/system01.dbf /u01/app/oracle/oradata/orcl_backup/system01.dbf


2. 강제 종료

SQL> shutdown abort;
ORACLE instance shut down.


3. 시작

SQL> startup;
ORACLE instance started.


4. 에러 메시지 확인

ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: '/u01/app/oracle/oradata/orcl/system01.dbf'


5. 문제 원인 분석

  위의 에러 메시지로 나타날 수 있는 장애의 원인이 4가지라고 한다.(metalink 문서번호 : 183367.1)

   1) 핫백업 중에 테이블 스페이스 장애 후 startup시
   2) 백업에서 데이터 파일 또는 테이블스페이스 복원 후에 startup시
   3) 데이터 파일 또는 테이블 스페이스를 온라인으로 시도할 때
   4) 불완전 복구시에 'using backup controlfile' 옵션으로 복구할 때
  
 원인은 이미 알고 있는 거지만 2)이므로 2)에 대한 해결만 이 포스트에서 하겠다.
 

6. 장애 해결

  1) mount로 startup(어차피 그냥 startup 하더라도 mount까지밖에 올라가지 않는다.)

SQL> startup mount;


  2) 핫백업 중인 데이터 파일을 찾는다.

SQL> SELECT V1.FILE#, NAME 
          FROM V$BACKUP V1, V$DATAFILE V2 
          WHERE V1.STATUS = 'ACTIVE' AND V1.FILE# = V2.FILE# ;

     FILE# NAME
---------- ----------------------------------------------------------------------------------------------------
         1 /u01/app/oracle/oradata/orcl/system01.dbf


  3) 다음의 명령을 통해 end backup을 실시한다.

SQL> alter tablespace system01 end backup;

  4) 데이터베이스를 open한다.

SQL> alter database open;


참조 : http://blog.naver.com/darkturtle?Redirect=Log&logNo=50029568769

'Oracle > Backup & Recovery' 카테고리의 다른 글

current redo log group 삭제시 복구  (0) 2010.11.24
RMAN  (0) 2010.07.09
Block Corruption  (0) 2009.12.23
restore points  (0) 2009.12.23
clone DB를 이용한 incomplete recovery 실습2 : RMAN  (0) 2009.12.22
Posted by 자수성가한 부자