결론부터 말씀드리면 저번주처럼 또 테스트 완료를 못했습니다.

테스트 db가 다른 문제로 올라오질 않아 테스트완료가 되지 못하였으나 작업한 곳까지 올리고 그 후에 하려고 했던 작업을 쓰는걸로 해야할것 같습니다.

 

1. 일단 테스트를 위해 테이블스페이스생성, 테이블생성, 데이터입력

여기서 테이블스페이스의 경우 ASM이어서 아래와 같은 문장만으로도 생성이 됩니다.

SQL> create tablespace TS_BACKUP_TEST datafile size 10m;
SQL> create table system.BACKUP_TEST_1 (no number, name varchar2(10)) tablespace TS_BACKUP_TEST;
SQL> insert into system.BACKUP_TEST_1 values (1,'AAA');
SQL> commit;

 

2. RMAN에 접속하여 백업수행하고 컨트롤파일백업만 다시 확인해봅니다.

왜냐하면 drop된 테이블스페이스복구의 key point가 바로 controlfile이기 때문이지요~

RMAN> backup database plus archivelog;

RMAN> list backup of controlfile;

List of Backup Sets
===================

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
71      Full    17.33M     DISK        00:00:01     15-JUL-16
        BP Key: 71   Status: AVAILABLE  Compressed: NO  Tag: TAG20160715T190200
        Piece Name: /backup/ARC/ORCL12/autobackup/2016_07_15/o1_mf_s_917290920_crkf4s8d_.bkp
  Control File Included: Ckp SCN: 4735515      Ckp time: 15-JUL-16

 

3. 그리고 삭제될 테이블스페이스가 백업이 잘 되어있나도 확인해봅니다.

RMAN> list backup of tablespace TS_BACKUP_TEST;

List of Backup Sets
===================

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
68      Full    1.70G      DISK        00:00:12     15-JUL-16
        BP Key: 68   Status: AVAILABLE  Compressed: NO  Tag: TAG20160715T190137
        Piece Name: /backup/ARC/ORCL12/backupset/2016_07_15/o1_mf_nnndf_TAG20160715T190137_crkf41dl_.bkp
  List of Datafiles in backup set 68
  File LV Type Ckp SCN    Ckp Time  Name
  ---- -- ---- ---------- --------- ----
  11      Full 4735494    15-JUL-16 +DATA/ORCL12/DATAFILE/ts_backup_test.385.917290659

 

4. 그리고 이제 테이블스페이스를 삭제합니다.

우리는 항상 자나깨나 drop문은 다시 봐야합니다. 이거 백업이 있다고 해도 drop은 항상 손떨리죠.

SQL> drop tablespace TS_BACKUP_TEST including contents and datafiles;
Tablespace dropped.
SQL> select * from system.backup_test_1;
select * from system.backup_test_1
                     *
ERROR at line 1:
ORA-00942: table or view does not exist

 

5. 이제 RMAN에 가서 테이블스페이스가 잘 백업이 되어있는지 다시 확인해봅니다.

RMAN>  list backup of tablespace TS_BACKUP_TEST;
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of list command at 07/15/2016 19:05:53
RMAN-20202: Tablespace not found in the recovery catalog
RMAN-06019: could not translate tablespace name "TS_BACKUP_TEST"

아니 아까 분명히 있었는데 없데요. 이상하네요. 그냥 restore를 수행해봅니다. 역시 없다네요.

그런 테이블스페이스는 알수가 없다는 에러를 뿌립니다.

RMAN> restore tablespace TS_BACKUP_TEST;
Starting restore at 15-JUL-16
using channel ORA_DISK_1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 07/15/2016 19:06:34
RMAN-20202: Tablespace not found in the recovery catalog
RMAN-06019: could not translate tablespace name "TS_BACKUP_TEST"

 

원인은 우리가 사용하는 catalog가 바로 control file이기 때문입니다.

현재의 control file에는 이미 TS_BACKUP_TEST라는 정보는 지워졌어요. 그래서 아까 백업본을 확인했던 그 컨트롤파일로 다시 DB를 올려볼꺼에요.

 

==> 그런데 여기까지 하고 DB를 내렸으나 내려가지도 올라오지도 않아 테스트를 못하였습니다.

이 이후에 진행할 내용은 아래와 같습니다.

DB의 문제로 아래 결과를 올리지는 못했지만 확인이 되는데로 아래 부분을 수정하도록 하겠습니다.

2016/07/20 : 테스트DB 기동으로 아래 테스트를 완료하였습니다. 아래 내용 참고부탁드립니다.

RMAN> shutdown immediate;
RMAN> startup nomount;
RMAN> restore controlfile from '/backup/ARC/ORCL12/autobackup/2016_07_15/o1_mf_s_917290920_crkf4s8d_.bkp';
Starting restore at 20-JUL-16
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=16 device type=DISK
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:02
output file name=+DATA/ORCL12/CONTROLFILE/current.272.912335235
output file name=/backup/ARC/ORCL12/controlfile/o1_mf_cmwszmbm_.ctl
Finished restore at 20-JUL-16

RMAN> alter database mount;
Statement processed
released channel: ORA_DISK_1

RMAN> list backup of tablespace TS_BACKUP_TEST;
List of Backup Sets
===================

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
68      Full    1.70G      DISK        00:00:12     15-JUL-16
        BP Key: 68   Status: AVAILABLE  Compressed: NO  Tag: TAG20160715T190137
        Piece Name: /backup/ARC/ORCL12/backupset/2016_07_15/o1_mf_nnndf_TAG20160715T190137_crkf41dl_.bkp
  List of Datafiles in backup set 68
  File LV Type Ckp SCN    Ckp Time  Name
  ---- -- ---- ---------- --------- ----
  11      Full 4735494    15-JUL-16 +DATA/ORCL12/DATAFILE/ts_backup_test.385.917290659

RMAN> RUN {
set until scn 4735494;
restore database;
}

RMAN> RUN {
set until scn 4735494;
recover database;
}
executing command: SET until clause
Starting recover at 20-JUL-16
using channel ORA_DISK_1
starting media recovery
media recovery complete, elapsed time: 00:00:00
Finished recover at 20-JUL-16

RMAN> alter database open resetlogs;

SQL> select segment_name from dba_segments where tablespace_name='TS_BACKUP_TEST';
SEGMENT_NAME
--------------------------------------------------------------------------------
BACKUP_TEST_1
SQL> select * from system.BACKUP_TEST_1;
        NO NAME
---------- ----------
         1 AAA
         2 BBB