728x90
이전 글 : 2022.09.02 - [Dev/Oracle] - [Oracle] RMAN backup - 특정 테이블 스페이스 제외
특정 테이블 스페이스를 제외하고 백업한 경우, 일부 데이터를 제외하고 백업 했기 때문에 복구할 때도 동일한 옵션을 주어야한다. 동일한 옵션 없이 복구를 시도한다면, 백업본에 존재하지 않는 데이터를 찾기 때문에 다음과 같은 오류가 발생한다.
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 14/09/2022 09:25:19
RMAN-06094: datafile 1 must be restored
recover database 구문에 skip tablespace 옵션을 주어 특정 테이블 스페이스를 제외하고 복구할 수 있다. 이때, 새로운 DB에 복구하는 경우 UNDO, SYSTEM, SYSAUX 테이블 스페이스는 필수적으로 복구되어야 한다.
skip tablespace 옵션은 아래와 같이 준다. 아래의 경우 TEST1, TEST2 테이블 스페이스를 제외하고 복원/복구할 수 있다. 복원할 때 준 옵션을 복구할 때도 동일하게 주어야 한다.
restore database skip tablespace 'TEST1','TEST2';
recover database skip tablespace 'TEST1','TEST2';
run 스크립트로 전체 과정을 실행하면 다음과 같다.
run{
set dbid=1234567890
startup nomount
restore controlfile from '/backup/db/rman/db_ctl_c-1234567890-20220914-01';
alter database mount;
set until time="to_date('2022-09-14 01:00:00','yyyy-mm-dd hh24:mi:ss')";
restore database skip tablespace 'TEST1','TEST2';
recover database skip tablespace 'TEST1','TEST2';
alter database open resetlogs;
}
run 스크립트로 실행하고자 한다면, run 스크립트를 실행하기 전에 DB는 shutdown 된 상태여야 한다. nomount 일때만 controlfile restore이 가능하다.
@dbid는 RMAN 백업을 받은 DB에서 SELECT * FROM V$DATABASE 쿼리를 통해 DBID를 조회할 수 있다.
SELECT * FROM V$DATABASE
728x90
'Dev > Oracle' 카테고리의 다른 글
[Oracle] Memory Notification: Library Cache Object loaded into SGA (0) | 2022.09.21 |
---|---|
[Oracle] datapump expdp 시점 맞추기 (0) | 2022.09.06 |
[Oracle] RMAN backup - 특정 테이블 스페이스 제외 (0) | 2022.09.02 |
[Oracle] TNS-12537: TNS:connection closed (1) | 2022.09.01 |
[Oracle] Crontab 스크립트가 작동하지 않을 때 (0) | 2022.08.31 |
댓글