oracle實驗記錄 (恢復-rman reset incatnation(1))
接 使用resetlogs open後資料檔案恢復
實驗下跨resetlogs 恢復db
簡單說下resetlogs作用:
resetlogs 不會重新設定SCN為0,只是將log sequence#設定為1,SCN 不變,resetlog open後,SCN為應用日誌的最後一條日誌記錄的SCN號+1
resetlog open後oracle將clear所有current logfile中未應用的redo record,將控制檔案中記錄的 日誌序號重新設定為1
當不完全恢復後datafile的SCN 與controlfile SCN,redo ,不一樣需要resetlogs open來 強制 同步,每次resetlog open後將產生一個incarnation,且需要ADD TEMPFILE
先備份一下db
C:\>rman target /
恢復管理器: Release 10.2.0.1.0 - Production on 星期五 10月 9 16:02:56 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
連線到目標資料庫: XH (DBID=3093395309)
RMAN> list backup;
使用目標資料庫控制檔案替代恢復目錄
RMAN> backup database;
啟動 backup 於 09-10月-09
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=141 devtype=DISK
通道 ORA_DISK_1: 啟動全部資料檔案備份集
通道 ORA_DISK_1: 正在指定備份集中的資料檔案
輸入資料檔案 fno=00001 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\SYSTEM01.DBF
輸入資料檔案 fno=00003 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\SYSAUX01.DBF
輸入資料檔案 fno=00005 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\EXAMPLE01.DBF
輸入資料檔案 fno=00002 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\UNDOTBS01.DBF
輸入資料檔案 fno=00004 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\USERS01.DBF
輸入資料檔案 fno=00009 name=D:\XHDATAFILE\OUTLINE.DBF
輸入資料檔案 fno=00007 name=D:\XHDATAFILE\XHTEST.DBF
輸入資料檔案 fno=00008 name=D:\XHDATAFILE\XHTR.DBF
輸入資料檔案 fno=00010 name=D:\XHDATAFILE\SMALLFILE.DBF
通道 ORA_DISK_1: 正在啟動段 1 於 09-10月-09
通道 ORA_DISK_1: 已完成段 1 於 09-10月-09
段控制程式碼=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\BACKUPSET\2009_10_09\O1_MF_N
NNDF_TAG20091009T160347_5DXVM5MK_.BKP 標記=TAG20091009T160347 註釋=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:55
通道 ORA_DISK_1: 啟動全部資料檔案備份集
通道 ORA_DISK_1: 正在指定備份集中的資料檔案
備份集中包括當前控制檔案
在備份集中包含當前的 SPFILE
通道 ORA_DISK_1: 正在啟動段 1 於 09-10月-09
通道 ORA_DISK_1: 已完成段 1 於 09-10月-09
段控制程式碼=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\BACKUPSET\2009_10_09\O1_MF_N
CSNF_TAG20091009T160347_5DXVNY3X_.BKP 標記=TAG20091009T160347 註釋=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:03
完成 backup 於 09-10月-09
RMAN>
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 CURRENT
3 UNUSED
2 UNUSED
SQL> select count(*) from tr.t1;
COUNT(*)
----------
1003
SQL> select count(*) from v$archived_log;
COUNT(*)
----------
56
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1557686
SQL> truncate table tr.t1;
表被截斷。
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1557734
SQL> select count(*) from tr.t1;
COUNT(*)
----------
0
SQL> alter system switch logfile;
系統已更改。
SQL> alter system checkpoint;
系統已更改。
SQL> select count(*) from v$archived_log;
COUNT(*)
----------
57
RMAN> run{startup force mount;
2> set until scn=1557686;
3> restore database;
4> recover database;
5> sql 'alter database open resetlogs';}
Oracle 例項已啟動
資料庫已裝載
正在開始介質的恢復
介質恢復完成, 用時: 00:00:08
完成 recover 於 09-10月-09
sql 語句: alter database open resetlogs
SQL> select count(*) from v$archived_log;
COUNT(*)
----------
58
SQL> select count(*) from tr.t1;
COUNT(*)
----------
1003
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1557971
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 UNUSED
3 UNUSED
2 CURRENT
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
1557688
SQL> select checkpoint_change# from v$datafile;
CHECKPOINT_CHANGE#
------------------
1557688
1557688
1557688
1557688
1557688
1557688
1557688
1557688
1557688
已選擇9行。
SQL> select checkpoint_change# from v$datafile_header;
CHECKPOINT_CHANGE#
------------------
1557688
1557688
1557688
1557688
1557688
1557688
1557688
1557688
1557688
已選擇9行。
SQL> insert into tr.t1 values(1,2);
已建立 1 行。
SQL> commit;
提交完成。
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 UNUSED
3 UNUSED
2 CURRENT
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1559092
SQL> select count(*) from tr.t1;
COUNT(*)
----------
1004
SQL> select count(*) from v$archived_log;
COUNT(*)
----------
58
SQL> alter system switch logfile;
系統已更改。
SQL> alter system checkpoint;
系統已更改。
使用resetlogs前備份 恢復
RMAN> run{ startup force mount;
2> restore database;
3> recover database;
4> }
RMAN> sql 'alter database open';
sql 語句: alter database open
SQL> select count(*) from v$archived_log;
COUNT(*)
----------
60
SQL> select count(*) from tr.t1;
COUNT(*)
----------
1004
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1579352
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 INACTIVE
3 CURRENT
2 INACTIVE
現在要求恢復到resetlogs前時間點 SCN 1557686 既ROW 1003時候
RMAN> list incarnation of database;
資料庫原型列表
DB 關鍵字 Inc 關鍵字 DB 名 DB ID STATUS 重置 SCN 重置時間
------- ------- -------- ---------------- --- ---------- ----------
2 2 XH 3093395309 PARENT 534907 18-9月 -09
1 1 XH 3093395309 PARENT 1511693 09-10月-09
3 3 XH 3093395309 ORPHAN 1512986 09-10月-09
4 4 XH 3093395309 PARENT 1532869 09-10月-09
5 5 XH 3093395309 PARENT 1533467 09-10月-09
6 6 XH 3093395309 PARENT 1533644 09-10月-09
7 7 XH 3093395309 PARENT 1554422 09-10月-09
8 8 XH 3093395309 PARENT 1554479 09-10月-09
9 9 XH 3093395309 PARENT 1555247 09-10月-09
10 10 XH 3093395309 PARENT 1555988 09-10月-09
11 11 XH 3093395309 CURRENT 1557687 09-10月-09
SQL> desc v$database_incarnation;
名稱 是否為空? 型別
----------------------------------------- -------- ----------------------------
INCARNATION# NUMBER
RESETLOGS_CHANGE# NUMBER
RESETLOGS_TIME DATE
PRIOR_RESETLOGS_CHANGE# NUMBER
PRIOR_RESETLOGS_TIME DATE
STATUS VARCHAR2(7)
RESETLOGS_ID NUMBER
PRIOR_INCARNATION# NUMBER
FLASHBACK_DATABASE_ALLOWED VARCHAR2(26)
INCARNATION# NUMBER Record ID for the branch record in the control file
RESETLOGS_CHANGE# NUMBER Resetlogs system change number (SCN) for the incarnation of the current row
RESETLOGS_TIME DATE Resetlogs timestamp for the incarnation of the current row
PRIOR_RESETLOGS_CHANGE# NUMBER Resetlogs SCN for the previous incarnation
PRIOR_RESETLOGS_TIME DATE Resetlogs timestamp for the previous incarnation
STATUS VARCHAR2(7) Incarnation status:
ORPHAN - Orphan incarnation
CURRENT - Current incarnation of the database
PARENT - Parent of the current incarnation
RESETLOGS_ID NUMBER Branch ID for the incarnation of the current row (used by user-managed recovery/RMAN restore to get unique names for archived logs across
incarnations)
PRIOR_INCARNATION# NUMBER Parent incarnation record ID if nonzero
FLASHBACK_DATABASE_ALLOWED VARCHAR2(26) Indicate whether or not Flashback Database can be performed into SCNs or timestamps in the incarnation. A value of
YES means that you can flashback to some point in that incarnation. A value of NO indicates that you cannot flashback into the incarnation.
RMAN> reset database to incarnation 10~~~~~~~~~~~需要在mount階段設定
2> ;
RMAN-03009: reset 命令 (default 通道上, 在 10/09/2009 17:40:19 上) 失敗
ORA-19910: 不能更改控制檔案中的恢復目標原型
ORA-19910: can not change recovery target incarnation in control file
Cause: The RESET DATABASE TO INCARNATION command was used while the database is open. This is not allowed.
Action: Close the database then re-issue the command.
RMAN> shutdown immediate;
資料庫已關閉
資料庫已解除安裝
Oracle 例項已關閉
RMAN> startup mount;
RMAN> reset database to incarnation 10;
RMAN> run{set until scn=1557686;
2> restore database;
3> recover database;
4> sql 'alter database open resetlogs';}
正在執行命令: SET until clause
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 UNUSED
3 CURRENT
2 UNUSED
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1557977
SQL> select count(*) from tr.t1;
COUNT(*)
----------
1003
SQL> select count(*) from v$archived_log;
COUNT(*)
----------
60
RMAN> list incarnation of database;
資料庫原型列表
DB 關鍵字 Inc 關鍵字 DB 名 DB ID STATUS 重置 SCN 重置時間
------- ------- -------- ---------------- --- ---------- ----------
2 2 XH 3093395309 PARENT 534907 18-9月 -09
1 1 XH 3093395309 PARENT 1511693 09-10月-09
3 3 XH 3093395309 ORPHAN 1512986 09-10月-09
4 4 XH 3093395309 PARENT 1532869 09-10月-09
5 5 XH 3093395309 PARENT 1533467 09-10月-09
6 6 XH 3093395309 PARENT 1533644 09-10月-09
7 7 XH 3093395309 PARENT 1554422 09-10月-09
8 8 XH 3093395309 PARENT 1554479 09-10月-09
9 9 XH 3093395309 PARENT 1555247 09-10月-09
10 10 XH 3093395309 PARENT 1555988 09-10月-09
11 11 XH 3093395309 ORPHAN 1557687 09-10月-09
12 12 XH 3093395309 CURRENT 1557687 09-10月-09
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12020513/viewspace-616176/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle RMAN恢復測試Oracle
- 【資料遷移1】Oracle 10gR2 rman異機恢復實驗(FS->RAW)(1)Oracle 10g
- Oracle RMAN 表空間恢復Oracle
- RMAN恢復實踐
- 【資料遷移1】Oracle 10gR2 rman異機恢復實驗(FS->RAW)(2)Oracle 10g
- 透過搭建恢復目錄實現RMAN異地備份和恢復
- Oracle 備份恢復篇之RMAN catalogOracle
- ORACLE DG從庫 Rman備份恢復Oracle
- 【Oracle 恢復表空間】 實驗Oracle
- Oracle 12C新特性-RMAN恢復表Oracle
- RMAN增量恢復
- 【RMAN】Oracle12c以後rman 備份恢復命令參考Oracle
- oracle ORA-01180 ORA-01110(rman恢復問題)Oracle
- ORACLE 11.2.0.4 RAC RMAN異機恢復之ORA-15001Oracle
- NBU恢復Oracle通道完成後RMAN沒有進度Oracle
- RMAN恢復之RMAN-06555處理
- rman 增量備份恢復
- RMAN備份恢復技巧
- Oracle9i RMAN 的優缺點及RMAN 備份及恢復步驟Oracle
- oracle 增量備份恢復驗證Oracle
- Windows oracle 11g rman備份恢復到linux系統WindowsOracleLinux
- 查詢RMAN恢復進度
- RMAN備份異機恢復
- RMAN備份恢復典型案例——異機恢復未知DBID
- oracle使用小記、刪除恢復Oracle
- RMAN備份恢復效能優化優化
- 在rman恢復中incarnation的概念
- RMAN備份與恢復測試
- 微信聊天記錄的恢復
- git reset --hard 操作後的資料恢復Git資料恢復
- G017-ORACLE-MIGRATION-01 RMAN備份異機不完全恢復Oracle
- 【RMAN】Oracle12c之後,rman備份Dataguard備端恢復可能出現邏輯錯誤Oracle
- 記錄一次Oracle 11.2.0.4 RAC異地恢復到單例項Oracle單例
- Oracle Database 12c RAC損壞ocr和votedisk恢復實驗OracleDatabase
- NBU恢復oracleOracle
- Oracle 目錄許可權丟失故障恢復Oracle
- rman備份異機恢復(原創)
- RMAN備份恢復典型案例——RMAN備份&系統變慢
- 表空間TSPITR恢復-實驗