다른 명령
rman 테이블 스페이스 백업/복구
rman 테이블 스페이스 백업
특정 테이블 스페이스 제외하고 백업
- 매일 새벽 진행되는 백업 데이터가 너무 커서 불필요한 데이터는 제외하고 백업할경우
- 특정 테이블 스페이스를 제외하고 백업 하기
- CONFIGURE 설정시 EXCLUDE FOR TABLESPACE 구문 추가
RMAN> run{ ... CONFIGURE EXCLUDE FOR TABLESPACE 'TESTDATA1'; CONFIGURE EXCLUDE FOR TABLESPACE 'TESTDATA2'; ... BACKUP AS COMPRESSED BACKUPSET database PLUS ARCHIVELOG; ... }
- [주의할 사항]
- 특정 테이블 스페이스를 제외하고 백업 하면 복구할때 주의해야 한다.
- 기존에 있던 데이터를 제외하고 백업 했기 때문에 복구할 때도 동일한 옵션을 주어야 한다.
- skip tablespace 옵션을 주지 않으면, 백업 데이터 내에 일부 테이블 스페이스의 데이터가 없기 때문에 datafile의 유실로 판단하고 복구 자체가 되지 않는다.
- 제외하고 백업시 복구하기가 번거로워 진다.!!!
테이블 스페이스 제외 백업 해제
- 제외 해제 (설정 되돌리기)
RMAN> CONFIGURE EXCLUDE FOR TABLESPACE TESTDATA1 CLEAR;
- 일시적으로 제외 해제 (제외하지 않고 백업)
RMAN> BACKUP DATABASE NOEXCLUDE;
rman 테이블 스페이스 복구
특정 테이블 스페이스 제외하고 복구
- 특정 테이블스페이스를 제외하고 백업한 경우, 일부 데이터를 제외하고 백업 했기 때문에 복구할 때도 동일한 옵션을 주어야함.
- 동일한 옵션 없이 복구를 시도한다면, 백업본에 존재하지 않는 데이터를 찾기 때문에 다음과 같은 오류가 발생한다.
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 테이블 스페이스는 필수적으로 복구되어야 함.
TEST1, TEST2 테이블 스페이스를 제외하고 복원/복구
- TEST1, TEST2 테이블 스페이스를 제외하고 복원(restore)
restore database skip tablespace 'TEST1','TEST2';
- 복원할 때 준 옵션을 복구(recover)할 때도 동일하게 주어야 한다.
recover database skip tablespace 'TEST1','TEST2';
run 스크립트
- run 스크립트로 실행하고자 한다면, run 스크립트를 실행하기 전에 DB는 shutdown 된 상태여야 한다.
- nomount 일때만 controlfile restore 가능
run{ set dbid=1234567890 startup nomount restore controlfile from '/backup/rman/db_ctl_c-1234567890-20000101-01'; alter database mount; set until time="to_date('2000-01-01 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; }
- @dbid는 RMAN 백업을 받은 DB에서 DBID 조회
SELECT * FROM V$DATABASE