RMAN深入解析之--Incarnation應用(不完全恢復)
當在做Media Recover的不完全恢復時,透過resetlogs開啟庫,則Incarnation(資料庫對應物)表示這個資料庫的特定的邏輯生存期。當作為DBA可能面臨這樣的還原:需要使用上次執行resetlogs命令開啟資料庫前生成的一個備份來進行還原資料庫,或者可能需要還原到執行上一個resetlogs命令之前的時間點。
案例1:(不完全恢復1)
1、table被誤刪除,進行不完全恢復
17:12:11 SYS@ prod>select current_scn from v$database;
CURRENT_SCN
-----------
2123790
17:12:24 SYS@ prod>conn scott/tiger
Connected.
17:12:43 SCOTT@ prod>select count(*) from emp1;
COUNT(*)
----------
28
Elapsed: 00:00:00.05
17:12:53 SCOTT@ prod>delete from emp1;
28 rows deleted.
Elapsed: 00:00:00.08
17:13:12 SCOTT@ prod>commit;
Commit complete.
Elapsed: 00:00:00.04
17:13:17 SCOTT@ prod>insert into emp1 select * from emp where empno=7788;
1 row created.
Elapsed: 00:00:00.04
17:13:28 SCOTT@ prod>update emp set empno=9999 where empno=7788;
1 row updated.
Elapsed: 00:00:00.03
17:13:43 SCOTT@ prod>commit;
Commit complete.
Elapsed: 00:00:00.04
17:13:45 SCOTT@ prod>select * from emp1;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7788 SCOTT ANALYST 7566 19-APR-87 3000 20
Elapsed: 00:00:00.02
2、執行不完全恢復
RMAN> run {
2> set until scn 2123790;
3> shutdown immediate;
4> startup mount;
5> restore database;
6> recover database;
7> alter database open resetlogs;
8> sql'alter system switch logfile';
9> }
executing command: SET until clause
using target database control file instead of recovery catalog
database closed
database dismounted
Oracle instance shut down
connected to target database (not started)
Oracle instance started
database mounted
Total System Global Area 835104768 bytes
Fixed Size 2217952 bytes
Variable Size 775948320 bytes
Database Buffers 54525952 bytes
Redo Buffers 2412544 bytes
Starting restore at 15-JUL-14
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=18 device type=DISK
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00001 to /u01/app/oracle/oradata/prod/system01.dbf
channel ORA_DISK_1: restoring datafile 00002 to /u01/app/oracle/oradata/prod/sysaux01.dbf
channel ORA_DISK_1: restoring datafile 00003 to /u01/app/oracle/oradata/prod/undotbs1.dbf
channel ORA_DISK_1: restoring datafile 00004 to /u01/app/oracle/oradata/prod/users01.dbf
channel ORA_DISK_1: restoring datafile 00005 to /u01/app/oracle/oradata/prod/example01.dbf
channel ORA_DISK_1: restoring datafile 00006 to /u01/app/oracle/oradata/prod/tbs1.dbf
channel ORA_DISK_1: restoring datafile 00007 to /u01/app/oracle/oradata/prod/undotbs2.dbf
channel ORA_DISK_1: restoring datafile 00008 to /u01/app/oracle/oradata/prod/perftbs01.dbf
channel ORA_DISK_1: reading from backup piece /u01/app/oracle/product/11.2.0/db_1/dbs/0lpcfu61_1_1
channel ORA_DISK_1: piece handle=/u01/app/oracle/product/11.2.0/db_1/dbs/0lpcfu61_1_1 tag=TAG20140703T171545
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:01:16
Finished restore at 15-JUL-14
Starting recover at 15-JUL-14
using channel ORA_DISK_1
starting media recovery
archived log for thread 1 with sequence 17 is already on disk as file /dsk4/arch1/arch_1_17_851265252.log
archived log for thread 1 with sequence 18 is already on disk as file /dsk4/arch1/arch_1_18_851265252.log
archived log for thread 1 with sequence 19 is already on disk as file /dsk4/arch1/arch_1_19_851265252.log
archived log file name=/dsk4/arch1/arch_1_17_851265252.log thread=1 sequence=17
media recovery complete, elapsed time: 00:00:09
Finished recover at 15-JUL-14
database opened
3、驗證
[oracle@rh6 ~]$ sqlplus '/as sysdba'
SQL*Plus: Release 11.2.0.1.0 Production on Tue Jul 15 17:26:10 2014
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
17:26:10 SYS@ prod>select count(*) from scott.emp1;
COUNT(*)
----------
28
Elapsed: 00:00:00.03
17:27:09 SYS@ prod>
資料被恢復!
5、檢視Incarnation
RMAN> list incarnation;
using target database control file instead of recovery catalog
List of Database Incarnations
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1 1 PROD 239333010 PARENT 1 15-AUG-09
2 2 PROD 239333010 PARENT 945184 30-SEP-13
3 3 PROD 239333010 PARENT 1087512 18-MAY-14
4 4 PROD 239333010 PARENT 1857377 26-JUN-14
5 5 PROD 239333010 CURRENT 2123791 15-JUL-14
RMAN>
RMAN> list backup of database;
List of Backup Sets
===================
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
17 Full 1.13G DISK 00:01:21 03-JUL-14
BP Key: 17 Status: AVAILABLE Compressed: NO Tag: TAG20140703T171545
Piece Name: /u01/app/oracle/product/11.2.0/db_1/dbs/0lpcfu61_1_1
List of Datafiles in backup set 17
File LV Type Ckp SCN Ckp Time Name
---- -- ---- ---------- --------- ----
1 Full 2066885 03-JUL-14 /u01/app/oracle/oradata/prod/system01.dbf
2 Full 2066885 03-JUL-14 /u01/app/oracle/oradata/prod/sysaux01.dbf
3 Full 2066885 03-JUL-14 /u01/app/oracle/oradata/prod/undotbs1.dbf
4 Full 2066885 03-JUL-14 /u01/app/oracle/oradata/prod/users01.dbf
5 Full 2066885 03-JUL-14 /u01/app/oracle/oradata/prod/example01.dbf
6 Full 2066885 03-JUL-14 /u01/app/oracle/oradata/prod/tbs1.dbf
7 Full 2066885 03-JUL-14 /u01/app/oracle/oradata/prod/undotbs2.dbf
8 Full 2066885 03-JUL-14 /u01/app/oracle/oradata/prod/perftbs01.dbf
案例2:(不完全恢復2)
1、table被誤刪除,透過不完全恢復進行恢復
17:42:24 SYS@ prod>conn scott/tiger
Connected.
17:42:28 SCOTT@ prod>insert into emp1 select * from emp where rownum <4;
3 rows created.
Elapsed: 00:00:00.05
17:42:42 SCOTT@ prod>commit;
Commit complete.
Elapsed: 00:00:00.01
17:42:44 SCOTT@ prod>insert into emp1 select * from emp where rownum <5;
4 rows created.
Elapsed: 00:00:00.02
17:42:52 SCOTT@ prod>commit;
Commit complete.
Elapsed: 00:00:00.05
17:42:55 SCOTT@ prod>conn /as sysdba
Connected.
17:43:01 SYS@ prod>select current_scn from v$database;
CURRENT_SCN
-----------
2124840
17:43:13 SYS@ prod>alter system switch logfile;
System altered.
Elapsed: 00:00:00.10
17:43:38 SYS@ prod>conn scott/tiger
Connected.
17:43:42 SCOTT@ prod>select count(*) from scott.emp1;
COUNT(*)
----------
35
Elapsed: 00:00:00.02
17:43:48 SCOTT@ prod>delete from emp1;
35 rows deleted.
Elapsed: 00:00:00.04
17:43:56 SCOTT@ prod>commit;
Commit complete.
Elapsed: 00:00:00.01
17:43:58 SCOTT@ prod>insert into emp1 select * from emp where empno=7788;
1 row created.
Elapsed: 00:00:00.01
17:44:09 SCOTT@ prod>update emp1 set empno=8888;
1 row updated.
Elapsed: 00:00:00.01
17:44:16 SCOTT@ prod>commit;
Commit complete.
Elapsed: 00:00:00.02
17:44:17 SCOTT@ prod>select * from emp1;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
8888 SCOTT ANALYST 7566 19-APR-87 3000 20
Elapsed: 00:00:00.03
2、透過rman做不完全恢復
RMAN> run {
set until scn 2124840;
2> shutdown immediate;
3> 4> startup mount;
5> restore database;
6> recover database;
7> alter database open resetlogs;
8> sql'alter system switch logfile';
9> }
executing command: SET until clause
database closed
database dismounted
Oracle instance shut down
connected to target database (not started)
Oracle instance started
database mounted
Total System Global Area 835104768 bytes
Fixed Size 2217952 bytes
Variable Size 775948320 bytes
Database Buffers 54525952 bytes
Redo Buffers 2412544 bytes
Starting restore at 15-JUL-14
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=18 device type=DISK
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00001 to /u01/app/oracle/oradata/prod/system01.dbf
channel ORA_DISK_1: restoring datafile 00002 to /u01/app/oracle/oradata/prod/sysaux01.dbf
channel ORA_DISK_1: restoring datafile 00003 to /u01/app/oracle/oradata/prod/undotbs1.dbf
channel ORA_DISK_1: restoring datafile 00004 to /u01/app/oracle/oradata/prod/users01.dbf
channel ORA_DISK_1: restoring datafile 00005 to /u01/app/oracle/oradata/prod/example01.dbf
channel ORA_DISK_1: restoring datafile 00006 to /u01/app/oracle/oradata/prod/tbs1.dbf
channel ORA_DISK_1: restoring datafile 00007 to /u01/app/oracle/oradata/prod/undotbs2.dbf
channel ORA_DISK_1: restoring datafile 00008 to /u01/app/oracle/oradata/prod/perftbs01.dbf
channel ORA_DISK_1: reading from backup piece /u01/app/oracle/product/11.2.0/db_1/dbs/0lpcfu61_1_1
channel ORA_DISK_1: piece handle=/u01/app/oracle/product/11.2.0/db_1/dbs/0lpcfu61_1_1 tag=TAG20140703T171545
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:01:25
Finished restore at 15-JUL-14
Starting recover at 15-JUL-14
using channel ORA_DISK_1
starting media recovery
archived log for thread 1 with sequence 17 is already on disk as file /dsk4/arch1/arch_1_17_851265252.log
archived log for thread 1 with sequence 18 is already on disk as file /dsk4/arch1/arch_1_18_851265252.log
archived log for thread 1 with sequence 19 is already on disk as file /dsk4/arch1/arch_1_19_851265252.log
archived log for thread 1 with sequence 20 is already on disk as file /dsk4/arch1/arch_1_20_851265252.log
archived log for thread 1 with sequence 1 is already on disk as file /dsk4/arch1/arch_1_1_853003284.log
archived log file name=/dsk4/arch1/arch_1_17_851265252.log thread=1 sequence=17
archived log file name=/dsk4/arch1/arch_1_18_851265252.log thread=1 sequence=18
archived log file name=/dsk4/arch1/arch_1_19_851265252.log thread=1 sequence=19
archived log file name=/dsk4/arch1/arch_1_20_851265252.log thread=1 sequence=20
media recovery complete, elapsed time: 00:00:10
Finished recover at 15-JUL-14
database opened
3、驗證
[oracle@rh6 ~]$ sqlplus '/as sysdba'
SQL*Plus: Release 11.2.0.1.0 Production on Tue Jul 15 17:48:52 2014
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
17:48:52 SYS@ prod>select count(*) from scott.emp1;
COUNT(*)
----------
35
Elapsed: 00:00:00.03
資料恢復成功!
4、檢視Incarnation:
RMAN> list incarnation;
using target database control file instead of recovery catalog
List of Database Incarnations
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1 1 PROD 239333010 PARENT 1 15-AUG-09
2 2 PROD 239333010 PARENT 945184 30-SEP-13
3 3 PROD 239333010 PARENT 1087512 18-MAY-14
4 4 PROD 239333010 PARENT 1857377 26-JUN-14
5 5 PROD 239333010 PARENT 2123791 15-JUL-14
6 6 PROD 239333010 CURRENT 2124841 15-JUL-14
注意:2124841 為當前Incarnation !
案例3:(不完全恢復3)
1、將資料庫再次恢復到當前Incarnation前
RMAN> run {
set until scn 2122840;
3> shutdown immediate;
4> startup mount;
5> restore database;
6> recover database;
7> alter database open resetlogs;
8> }
executing command: SET until clause
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of shutdown command at 07/15/2014 17:51:17
RMAN-20208: UNTIL CHANGE is before RESETLOGS change
---恢復出錯,不能再恢復到當前Incarnation前 !
2、檢視Incarnation
RMAN> list incarnation;
List of Database Incarnations
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1 1 PROD 239333010 PARENT 1 15-AUG-09
2 2 PROD 239333010 PARENT 945184 30-SEP-13
3 3 PROD 239333010 PARENT 1087512 18-MAY-14
4 4 PROD 239333010 PARENT 1857377 26-JUN-14
5 5 PROD 239333010 PARENT 2123791 15-JUL-14
6 6 PROD 239333010 CURRENT 2124841 15-JUL-14
3、重新執行恢復
1、關閉資料庫
RMAN> shutdown immediate;
database closed
database dismounted
instance shut down
2、啟動資料庫到nomount
RMAN> startup mount;
connected to target database (not started)
Oracle instance started
database mounted
Total System Global Area 835104768 bytes
Fixed Size 2217952 bytes
Variable Size 775948320 bytes
Database Buffers 54525952 bytes
Redo Buffers 2412544 bytes
3、恢復Incarnation到前一個
RMAN> reset database to incarnation 5;
database reset to incarnation 5
RMAN> list incarnation;
List of Database Incarnations
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1 1 PROD 239333010 PARENT 1 15-AUG-09
2 2 PROD 239333010 PARENT 945184 30-SEP-13
3 3 PROD 239333010 PARENT 1087512 18-MAY-14
4 4 PROD 239333010 PARENT 1857377 26-JUN-14
5 5 PROD 239333010 CURRENT 2123791 15-JUL-14
6 6 PROD 239333010 ORPHAN 2124841 15-JUL-14
4、restore資料庫
RMAN> restore database until scn 2124835;
Starting restore at 15-JUL-14
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=21 device type=DISK
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00001 to /u01/app/oracle/oradata/prod/system01.dbf
channel ORA_DISK_1: restoring datafile 00002 to /u01/app/oracle/oradata/prod/sysaux01.dbf
channel ORA_DISK_1: restoring datafile 00003 to /u01/app/oracle/oradata/prod/undotbs1.dbf
channel ORA_DISK_1: restoring datafile 00004 to /u01/app/oracle/oradata/prod/users01.dbf
channel ORA_DISK_1: restoring datafile 00005 to /u01/app/oracle/oradata/prod/example01.dbf
channel ORA_DISK_1: restoring datafile 00006 to /u01/app/oracle/oradata/prod/tbs1.dbf
channel ORA_DISK_1: restoring datafile 00007 to /u01/app/oracle/oradata/prod/undotbs2.dbf
channel ORA_DISK_1: restoring datafile 00008 to /u01/app/oracle/oradata/prod/perftbs01.dbf
channel ORA_DISK_1: reading from backup piece /u01/app/oracle/product/11.2.0/db_1/dbs/0lpcfu61_1_1
channel ORA_DISK_1: piece handle=/u01/app/oracle/product/11.2.0/db_1/dbs/0lpcfu61_1_1 tag=TAG20140703T171545
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:01:15
Finished restore at 15-JUL-14
5、Recover 資料庫
RMAN> recover database until scn 2124835;
Starting recover at 15-JUL-14
using channel ORA_DISK_1
starting media recovery
archived log for thread 1 with sequence 17 is already on disk as file /dsk4/arch1/arch_1_17_851265252.log
archived log for thread 1 with sequence 18 is already on disk as file /dsk4/arch1/arch_1_18_851265252.log
archived log for thread 1 with sequence 19 is already on disk as file /dsk4/arch1/arch_1_19_851265252.log
archived log for thread 1 with sequence 20 is already on disk as file /dsk4/arch1/arch_1_20_851265252.log
archived log for thread 1 with sequence 1 is already on disk as file /dsk4/arch1/arch_1_1_853003284.log
archived log file name=/dsk4/arch1/arch_1_17_851265252.log thread=1 sequence=17
archived log file name=/dsk4/arch1/arch_1_18_851265252.log thread=1 sequence=18
archived log file name=/dsk4/arch1/arch_1_19_851265252.log thread=1 sequence=19
archived log file name=/dsk4/arch1/arch_1_20_851265252.log thread=1 sequence=20
archived log file name=/dsk4/arch1/arch_1_1_853003284.log thread=1 sequence=1
media recovery complete, elapsed time: 00:00:08
Finished recover at 15-JUL-14
6、檢視Incarnation
RMAN> list incarnation;
List of Database Incarnations
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1 1 PROD 239333010 PARENT 1 15-AUG-09
2 2 PROD 239333010 PARENT 945184 30-SEP-13
3 3 PROD 239333010 PARENT 1087512 18-MAY-14
4 4 PROD 239333010 PARENT 1857377 26-JUN-14
5 5 PROD 239333010 CURRENT 2123791 15-JUL-14
6 6 PROD 239333010 ORPHAN 2124841 15-JUL-14
7、開啟資料庫(resetlogs)
RMAN> alter database open resetlogs;
database opened
RMAN> list incarnation;
List of Database Incarnations
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1 1 PROD 239333010 PARENT 1 15-AUG-09
2 2 PROD 239333010 PARENT 945184 30-SEP-13
3 3 PROD 239333010 PARENT 1087512 18-MAY-14
4 4 PROD 239333010 PARENT 1857377 26-JUN-14
5 5 PROD 239333010 PARENT 2123791 15-JUL-14
7 7 PROD 239333010 CURRENT 2124836 15-JUL-14
6 6 PROD 239333010 ORPHAN 2124841 15-JUL-14
8、驗證
[oracle@rh6 ~]$ sqlplus '/as sysdba'
SQL*Plus: Release 11.2.0.1.0 Production on Tue Jul 15 18:01:11 2014
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
18:01:11 SYS@ prod>select count(*) from scott.emp1;
COUNT(*)
----------
35
Elapsed: 00:00:00.05
@至此,資料恢復完成!
本文為轉載文章
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31547066/viewspace-2285673/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- rman 穿越incarnation恢復資料
- RMAN 備份與恢復深入解析(二)
- RMAN 備份與恢復深入解析(一)
- RMAN全庫【完全恢復/不完全恢復brief version】
- rman通過之前的incarnation恢復資料庫!資料庫
- 備份與恢復:用rman方式基於日誌序列的不完全恢復
- dataguard中rman恢復的應用
- Oracle Rman 資料庫的不完全恢復Oracle資料庫
- rman中三個不完全恢復場景
- RMAN學習小結1:不完全恢復
- Oracle 基於 RMAN 的不完全恢復(incomplete recovery by RMAN)Oracle
- RMAN一次RMAN將資料庫不完全恢復資料庫
- 循序漸進oracle第7章:備份與恢復之RMAN映象拷貝不完全恢復Oracle
- RMAN 滾動式不完全恢復 小實驗
- Oracle穿越incarnation恢復資料Oracle
- 恢復到特定點(時間點、scn、日誌序列號),rman不完全恢復
- 【Mysql】完全恢復與不完全恢復MySql
- 使用RMAN恢復目錄(catalog)解析
- RMAN恢復之RMAN-06555處理
- 用rman執行塊恢復
- Oracle 不完全恢復Oracle
- Oracle rman incarnationOracle
- RMAN備份恢復之控制檔案的恢復(三)
- RMAN備份恢復之控制檔案的恢復(二)
- RMAN備份恢復之控制檔案的恢復(一)
- rman備份恢復命令之switch
- oracle之rman恢復資料庫Oracle資料庫
- oracle rman之丟失spfile恢復Oracle
- RMAN恢復 執行重要檔案RMAN恢復
- 【RMAN】使用RMAN備份將資料庫不完全恢復到指定時間點資料庫
- [RMAN]使用RMAN備份將資料庫不完全恢復到指定時間點資料庫
- 歸檔模式下,使用RMAN的同一備份兩次用於不完全恢復模式
- oracle實驗記錄 (恢復-不完全恢復)Oracle
- 【備份與恢復】控制檔案的恢復(不完全恢復)
- 使用RMAN的不完全恢復-基於時間/SCN/日誌序列
- rman恢復spfile和control和resetlogs建立控制檔案和不完全恢復疑點
- rman之同平臺異機恢復
- rman之建立恢復目錄筆記筆記