oracle實驗記錄 (恢復-關於控制檔案(4))
有一個問題,使用舊備份控制檔案時候恢復到最新, 總是要using backup controlfile
經過pub 朋友 SUNBLAZE (端著AK的貓 ),給了思路~~也許是需要instance recover
特此實驗記錄下
SQL> @d:\backup\backupctl.txt
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
SQL> alter system switch logfile;~~~~~~~~~~~~~~~因為是實驗~需要執行一次,若備份和current controlfile中間~沒有2次checkpoint,那麼備份controlfile可以直接使用
對比的是 controlfile中 Checkpoint cnt,與file header 中 ctl cnt(這個就是防止更新controlfile時候abort)
系統已更改。
SQL> alter system checkpoint;
系統已更改。
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup mount;
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已經啟動。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 226495364 bytes
Database Buffers 377487360 bytes
Redo Buffers 7135232 bytes
資料庫裝載完畢。
SQL>
SQL> select sequence#,group#,status from v$log;
SEQUENCE# GROUP# STATUS
---------- ---------- ----------------
11 1 CURRENT
9 3 INACTIVE
10 2 INACTIVE
SQL> select checkpoint_change#,last_change# from v$datafile;
CHECKPOINT_CHANGE# LAST_CHANGE#
------------------ ------------
1435071 1435071~~~~~~~~~~~~~~datafile scn ,stop scn
1435071 1435071
1435071 1435071
1435071 1435071
1435071 1435071
1435071 1435071
1435071 1435071
1435071 1435071
已選擇8行。
SQL> select checkpoint_change# from v$datafile_header;
CHECKPOINT_CHANGE#
------------------
1435071~~~~~~~~~~~~~~~~~~~~~~~~~START SCN
1435071
1435071
1435071
1435071
1435071
1435071
1435071
已選擇8行。
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
1435071~~~~~~~~~~~~~~~~~~~~~~~~~SYSTEM SCN
以上資訊是 當前控制檔案中資訊
SQL> shutdown immediate;
ORA-01109: 資料庫未開啟
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~restore controlfile
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已經啟動。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 226495364 bytes
Database Buffers 377487360 bytes
Redo Buffers 7135232 bytes
資料庫裝載完畢。
ORA-01122: 資料庫檔案 1 驗證失敗
ORA-01110: 資料檔案 1: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF'
ORA-01207: 檔案比控制檔案更新 - 舊的控制檔案
SQL> select sequence#,group#,status from v$log;
SEQUENCE# GROUP# STATUS
---------- ---------- ----------------
8 1 INACTIVE
9 3 INACTIVE
10 2 CURRENT
SQL> select checkpoint_change#,last_change# from v$datafile;
CHECKPOINT_CHANGE# LAST_CHANGE#
------------------ ------------
1432437
1432437
1432437 ~~~~~~沒有 stop scn(其實應該有值,我備份時候是 online 沒關閉database 所以controlfile中沒記錄stop scn ,為無窮大)
1432437
1432437
1432437
1432437
1432437
已選擇8行。
SQL> select checkpoint_change# from v$datafile_header;
CHECKPOINT_CHANGE#
------------------
1435071
1435071
1435071 START SCN 不等於stop scn, 需要 instance recover 應用current redo log
1435071
1435071
1435071
1435071
1435071
已選擇8行。
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
1432437
SQL>
SQL> recover database using backup controlfile;
ORA-00279: 更改 1434879 (在 09/11/2009 09:35:13 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: E:\ARCHIVELOG\ARC00011_0697045088.001.ARC
ORA-00280: 更改 1434879 (用於執行緒 1) 在序列 #11 中
指定日誌: {
E:\oracle\product\10.2.0\oradata\orcl\redo01.log
已應用的日誌。
完成介質恢復。
SQL> select sequence#,group#,status from v$log;
SEQUENCE# GROUP# STATUS
---------- ---------- ----------------
8 1 INACTIVE
9 3 INACTIVE
10 2 CURRENT
SQL> select checkpoint_change#,last_change# from v$datafile;
CHECKPOINT_CHANGE# LAST_CHANGE#
------------------ ------------
1432437 1435071
1432437 1435071~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~stop SCN
1432437 1435071
1432437 1435071
1432437 1435071
1432437 1435071
1432437 1435071
1432437 1435071
已選擇8行。
SQL> select checkpoint_change# from v$datafile_header;
CHECKPOINT_CHANGE#
------------------
1435071
1435071
1435071~~~~~~~~~~~~~~~~~~~~~~~~~~~START SCN
1435071
1435071
1435071
1435071
1435071
已選擇8行。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~STOP SCN=START SCN 不需要instance recover
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
1432437
~~~~~~~~~~~~~~~~~~~~controlfile其它資訊沒變 但是多了STOP SCN(同步了)
SQL> alter session set events 'immediate trace name controlf level 8';
會話已更改。
SQL> alter system dump logfile 'E:\oracle\product\10.2.0\oradata\orcl\redo01.log';
系統已更改。
DUMP CONTROLFILE
DATA FILE #2:
(name #9) E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
creation size=0 block size=8192 status=0xe head=9 tail=9 dup=1
tablespace 1, index=2 krfil=2 prev_file=0
unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
Checkpoint cnt:255 scn: 0x0000.0015db75 09/11/2009 09:00:58
Stop scn: 0x0000.0015e5bf 09/11/2009 09:35:49~~~~STOP SCN
Creation Checkpointed at scn: 0x0000.00081f74 08/30/2005 17:25:44
thread:0 rba:(0x0.0.0)
SQL> select to_number('15e5bf','xxxxxxxx') from dual;
TO_NUMBER('15E5BF','XXXXXXXX')
------------------------------
1435071
DUMP OF REDO FROM FILE 'E:\oracle\product\10.2.0\oradata\orcl\redo01.log'
Opcodes *.*
RBAs: 0x000000.00000000.0000 thru 0xffffffff.ffffffff.ffff
SCNs: scn: 0x0000.00000000 thru scn: 0xffff.ffffffff
Times: creation thru eternity
FILE HEADER:
Low scn: 0x0000.0015e4ff (1434879) 09/11/2009 09:35:13~~~~v$log FIRST_CHANGE#
Next scn: 0xffff.ffffffff 01/01/1988 00:00:00~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~這是current logfile
Thread closed scn: 0x0000.0015e5bf (1435071) 09/11/2009 09:35:49~~~~~~~~~~~~從redo獲得了STOP SCN
SQL> alter database open resetlogs;
資料庫已更改。
小結:使用備份控制檔案恢復到最新的時候 oracle 發現控制檔案中stop scn比 datafile 中start scn要小所以需要instance reocver ,instanc recover 就是用current redo
log
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12020513/viewspace-614421/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle實驗記錄 (恢復-關於控制檔案(1))Oracle
- oracle實驗記錄 (恢復-關於控制檔案(2))Oracle
- oracle實驗記錄 (恢復-關於控制檔案(3))Oracle
- oracle實驗記錄 (恢復-rman基於控制檔案的恢復)Oracle
- oracle實驗記錄 (恢復-關於熱備份)Oracle
- oracle實驗記錄 (恢復-恢復未備份的資料檔案)Oracle
- oracle實驗記錄 (恢復-完全恢復)Oracle
- oracle實驗記錄 (恢復-rman恢復)Oracle
- oracle實驗記錄 (恢復-redo)Oracle
- oracle實驗記錄 (恢復-不完全恢復)Oracle
- oracle實驗記錄(恢復-checkpoint cnt)Oracle
- oracle實驗記錄 (可恢復session)OracleSession
- oracle實驗記錄 (恢復,備份-含壞塊資料檔案)Oracle
- oracle實驗記錄(恢復-丟失未備份資料檔案)Oracle
- oracle實驗記錄 (恢復-表空間基於時間點恢復(rman))Oracle
- oracle實驗記錄 (恢復-rman catalog)Oracle
- oracle實驗記錄 (恢復-rman保留策略)Oracle
- oracle實驗記錄 (恢復-表空間基於時間點恢復(手動))Oracle
- oracle實驗記錄 (恢復-rman維護(1))Oracle
- oracle實驗記錄 (恢復-rman維護(2))Oracle
- oracle實驗記錄 (恢復-rman增量備份)Oracle
- Oracle檔案改名實驗記錄Oracle
- 【備份恢復】利用 備份控制檔案到指定目錄下的控制檔案 恢復控制檔案
- oracle實驗記錄 (恢復-使用resetlogs open前備份恢復)Oracle
- oracle實驗記錄 (恢復-rman reset incatnation(1))Oracle
- oracle實驗記錄 (恢復read only tablespace(1))Oracle
- oracle實驗記錄 (恢復read only tablespace(2))Oracle
- oracle實驗記錄 (恢復-rman操作delete(all) input )Oracledelete
- 與控制檔案有關的恢復
- RMAN恢復案例:無恢復目錄,丟失全部資料檔案、控制檔案、日誌檔案恢復
- oracle 關於--控制檔案Oracle
- 備份恢復實驗(1)丟失部分控制檔案
- RMAN 恢復之控制檔案篇(4/5)
- 控制檔案恢復—從trace檔案中恢復
- oracle實驗記錄 (關於表實際大小)Oracle
- oracle實驗記錄 (恢復-rman操作(設定&備份))Oracle
- Oracle備份與恢復【丟失控制檔案的恢復】Oracle
- 與控制檔案有關的恢復(二)