개요
tbrmgr의 --restore-only 옵션을 사용하면 데이터파일에 대한 restore 작업을 수행할 수 있습니다.
이 옵션은 데이터베이스가 mount 모드일 때에만 사용 가능합니다.
참고
-restore-only
대상 백업 데이터 파일들을 가져온 후 복구는 수행하지 않습니다.
MOUNT 또는 NORMAL 모드에서 사용 가능하며, NORMAL 모드에서는 반드시 Offline 테이블 스페이스들을 지정해야 합니다.
방법
tbrmgr을 이용한 restore 예제입니다.
1. Tablespace 조회
SQL> col DF_NAME format a40
SQL> col TS_NAME format a15
SQL> SELECT a.name as DF_NAME, b.name as TS_NAME, a.FILE#, b.TS#
FROM v$datafile a
INNER JOIN v$tablespace b
ON a.TS#=b.TS# ;
2 3 4
DF_NAME TS_NAME FILE# TS#
---------------------------------------- --------------- ---------- ----------
+DS0/tac/system01/system01.dtf SYSTEM 0 0
+DS0/tac/system01/undo0_01.dtf UNDO0 1 1
+DS0/tac/system01/usr01.dtf USR 2 3
+DS0/tac/system01/tpr01.dtf SYSSUB 3 4
+DS0/tac/system02/undo1_01.dtf UNDO1 4 5
+DS0/tac/test1.dbf TEST1 5 6
+DS0/tac/test2.dbf TEST2 6 7
+DS0/tac/test3.dbf TEST3 7 8
8 rows selected.
SQL
복사
2. tbrmgr 백업 수행 후 장애 상황 유발
[14:35]ASCMD +DS0/tac> rm test1.dbf
Removing file: +DS0/tac/test1.dbf
[14:35]ASCMD +DS0/tac> rm test2.dbf
Removing file: +DS0/tac/test1.dbf
[14:37]ASCMD +DS0/tac> rm test3.dbf
Removing file: +DS0/tac/test3.dbf
SQL
복사
3. 파일 restore 진행
$ cmrctl start db --name tac1 --option mount
BOOT SUCCESS! (MODE : MOUNT)
** -T(--skip-tablespace)의 경우 restore에서 제외할 Tablespace를 지정할 수 있음
$ tbrmgr recover --restore-only -o /db/backup -T test1,test3
==============================================================================
= Recovery Manager(RMGR) starts =
= =
= TmaxTibero Corporation Copyright (c) 2020-. All rights reserved. =
==============================================================================
archive log check succeeded
RMGR '-o' option used
: restoring from /db/backup
==============================================================================
RMGR - recovery (RESTORE ONLY)
==============================================================================
Initializing the restore progress, it may take few minutes...
RMGR begins restoring backup files.
Full backup set_id: 1
Last incremental backup set_id: 1
RESTORE (set_id: 1, ts_id: 0, df_id: 0) - FULL BACKUP
100.0% |===============================>| 38400/38400 blks 1.05s
Synchronizing...
RESTORE (set_id: 1, ts_id: 1, df_id: 1) - FULL BACKUP
100.0% |===============================>| 12800/12800 blks 0.00s
Synchronizing...
RESTORE (set_id: 1, ts_id: 3, df_id: 2) - FULL BACKUP
100.0% |===============================>| 12800/12800 blks 0.00s
Synchronizing...
RESTORE (set_id: 1, ts_id: 4, df_id: 3) - FULL BACKUP
100.0% |===============================>| 12800/12800 blks 1.03s
Synchronizing...
RESTORE (set_id: 1, ts_id: 5, df_id: 4) - FULL BACKUP
100.0% |===============================>| 38400/38400 blks 2.08s
Synchronizing...
RESTORE (set_id: 1, ts_id: 7, df_id: 6) - FULL BACKUP #-- test1,3은 제외하고 test2에 대해서만 restore
100.0% |===============================>| 6400/6400 blks 0.00s
Synchronizing...
Settling...
Database restoration succeeded #-- restore 이후 recovery는 진행하지 않음
RMGR recovery ends
SQL
복사