Site icon DBA의 정석

[Oracle 12c] Recover table명령어로 Table 복구하기

 

 

RECOVER TABLE


명령어를 이용한 백업 파일에서 특정 테이블 복구

 

여러가지 데이터 손실에 대한 장애에 따른FLASHBACK, LOGMINER, RECYCLEBIN 등 완전 복구 방법은 많습니다.

하지만 TRUNCATE TABLE 에 대한 완전 복구를 하는 방법에 대해서는 앞에서 살펴본 백업본을 타 서버에 내려서 올려서 복구하는 방법 밖에 없었습니다.

Oracle 12C 버전에서는 특정 테이블만 백업 데이터 에서 복구 하는RECOVER TABLE 기능이 제공 됩니다.

지금부터RECOVER TABLE 기능을 이용하여 복구하는 실습을 해보겠습니다.

 

SQL> 테스트 유저 생성

SQL> 테스트 테이블 생성

SQL> 테스트 테이블에 테스트 데이터 생성

 

 

이제 RMAN 백업을 수행 합니다.

# rman target /

RMAN> BACKUP AS COMPRESSED
BACKUPSET DATABASE ;

 

이제TRUNCATE TABLE 장애를 발생 시킵니다.

SQL> ALTER SESSION SET
NLS_DATE_FORMAT=’YYYY/MM/DD HH24:MI:SS’ ;

SQL> SELECT SYSDATE FROM DUAL ;

SQL> TRUNCATE TABLE EMP ;

 

 

이제RECOVER TABLE 명령으로 복구를 시작합니다. 운영DBOPEN인 상태에서 실행 합니다.

SQL> RENAME EMP TO EMP_BACK ;

RMAN> RECOVER TABLE YONGSEOK.EMP UNTIL TIME “TO_DATE(‘2017-11-28:16:18:21′,’yyyy-mm-dd:hh24:mi:ss’)” AUXILIARY DESTINATION ‘/oracle/oracle12/RECOVER_TAB_AREA’ ;

RMANRECOVER TABLE 명령어를 수행 하면 해당TABLE의 백업 시점에 필요한 테이블 스페이스에 필요한 백업데이타 파일과 기본적으로 필요한DB의 기본 테이블 스페이스SYSTEM, SYSAUX, UNDO 테이블 스페이스 와 함께 해당 영역에 복제DB를 생성 한다.

그리고 나서 만들어진 복제DB에서 해당TABLE 을 데이터펌프EXPDP를 이용해 추출 해서 원래 데이터베이스로IMPDP 적재 된다.

이전의 버전에서DBA가 수작업으로 각 단계별로 복구해야 하는 일련의 과정들이 단 한 줄의RMAN 명령어로 진행 되었습니다.

이제 복구가 잘 되었는지 테이블을 조회 합니다.

SQL> ALTER SESSION SET NLS_DATE_FORMAT=’YYYY/MM/DD HH24:MI:SS’ ;

SQL> SELECT SYSDATE FROM DUAL ;

SQL> SELECT * FROM EMP ;

 

간단한RMAN 명령어로 테이블 복구가 완료 되었습니다.

Exit mobile version