RECOVER TABLE
명령어를 이용한 백업 파일에서 특정 테이블 복구
여러가지 데이터 손실에 대한 장애에 따른FLASHBACK, LOGMINER, RECYCLEBIN 등 완전 복구 방법은 많습니다.
하지만 TRUNCATE TABLE 에 대한 완전 복구를 하는 방법에 대해서는 앞에서 살펴본 백업본을 타 서버에 내려서 올려서 복구하는 방법 밖에 없었습니다.
Oracle 12C 버전에서는 특정 테이블만 백업 데이터 에서 복구 하는RECOVER TABLE 기능이 제공 됩니다.
지금부터RECOVER TABLE 기능을 이용하여 복구하는 실습을 해보겠습니다.
이제 RMAN 백업을 수행 합니다.
이제TRUNCATE TABLE 장애를 발생 시킵니다.
SQL> ALTER SESSION SET SQL> SELECT SYSDATE FROM DUAL ; SQL> TRUNCATE TABLE EMP ; |
이제RECOVER TABLE 명령으로 복구를 시작합니다. 운영DB가OPEN인 상태에서 실행 합니다.
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’ ; |
RMAN의RECOVER 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 명령어로 테이블 복구가 완료 되었습니다.