행위

Rman 테이블스페이스 복구

DB CAFE

thumb_up 추천메뉴 바로가기


1 rman 테이블 스페이스 백업/복구[편집]

1.1 rman 테이블 스페이스 백업[편집]

1.1.1 특정 테이블 스페이스 제외하고 백업[편집]

  • 매일 새벽 진행되는 백업 데이터가 너무 커서 불필요한 데이터는 제외하고 백업할경우
  • 특정 테이블 스페이스를 제외하고 백업 하기
    • CONFIGURE 설정시 EXCLUDE FOR TABLESPACE 구문 추가
RMAN> run{
...
CONFIGURE EXCLUDE FOR TABLESPACE 'TESTDATA1';
CONFIGURE EXCLUDE FOR TABLESPACE 'TESTDATA2';
...
BACKUP AS COMPRESSED BACKUPSET database PLUS ARCHIVELOG;
...
}


  • [주의할 사항]
  1. 특정 테이블 스페이스를 제외하고 백업 하면 복구할때 주의해야 한다.
  2. 기존에 있던 데이터를 제외하고 백업 했기 때문에 복구할 때도 동일한 옵션을 주어야 한다.
  3. skip tablespace 옵션을 주지 않으면, 백업 데이터 내에 일부 테이블 스페이스의 데이터가 없기 때문에 datafile의 유실로 판단하고 복구 자체가 되지 않는다.
  4. 제외하고 백업시 복구하기가 번거로워 진다.!!!

1.1.2 테이블 스페이스 제외 백업 해제[편집]

  • 제외 해제 (설정 되돌리기)
RMAN> CONFIGURE EXCLUDE FOR TABLESPACE TESTDATA1 CLEAR;


  • 일시적으로 제외 해제 (제외하지 않고 백업)
RMAN> BACKUP DATABASE NOEXCLUDE;

1.2 rman 테이블 스페이스 복구[편집]

1.2.1 특정 테이블 스페이스 제외하고 복구[편집]

  • 특정 테이블스페이스를 제외하고 백업한 경우, 일부 데이터를 제외하고 백업 했기 때문에 복구할 때도 동일한 옵션을 주어야함.
  • 동일한 옵션 없이 복구를 시도한다면, 백업본에 존재하지 않는 데이터를 찾기 때문에 다음과 같은 오류가 발생한다.
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 테이블 스페이스는 필수적으로 복구되어야 함.

1.2.2 TEST1, TEST2 테이블 스페이스를 제외하고 복원/복구[편집]

  • TEST1, TEST2 테이블 스페이스를 제외하고 복원(restore)
restore database skip tablespace 'TEST1','TEST2';


  • 복원할 때 준 옵션을 복구(recover)할 때도 동일하게 주어야 한다.
recover database skip tablespace 'TEST1','TEST2';
1.2.2.1 run 스크립트[편집]
  1. run 스크립트로 실행하고자 한다면, run 스크립트를 실행하기 전에 DB는 shutdown 된 상태여야 한다.
  2. 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