recover database using backup controlfile理解

linxueguo發表於2021-11-19

深入剖析 - Oracle SCN機制詳細解讀

media recovery和instance recovery的差別

https://www.cnblogs.com/Peyton-for-2012/archive/2013/03/01/2938416.html


recover database using backup controlfile

http://blog.chinaunix.net/uid-20274021-id-1969571.html


要理解recover database using backup controlfile,先理解 recover database 也就是說,不加using backup controlfile

的情況。在普通的recover database 或者 recover tablespace, recover datafile時, Oracle會以當前controlfile所紀錄的

SCN為準,利用archive log和 redo log的redo entry, 把相關的datafile 的 block恢復到“當前controlfile所紀錄的SCN”。

而某些情況下,Oracle需要把資料恢復到比當前controlfile所紀錄的SCN還要靠後的位置(比如說,control file是backup 

controlfile , 或者 controlfile是根據trace create的。),這時候,就需要用using backup controlfile. 恢復就不會受“當前

controlfile所紀錄的SCN”的限制。這時候的限制就來自於你的語句(until time , until scn),或者可用的archive log(until 

cancel) ...

首先這裡我們先介紹四個SCN概念。

1、系統檢查點scn (System Checkpoint SCN)

當一個checkpoint檢查點動作完成後,Oracle就把系統檢查點的SCN儲存到控制檔案中。

select checkpoint_change# from v$database;

2,資料檔案檢查點scn (Datafile Checkpoint SCN)

當一個checkpoint動作完成後,Oracle就把每個資料檔案的Datafile Checkpoint SCN單獨存放在控制檔案中。

select name,checkpoint_change# from v$datafile;

3,啟動scn (Start SCN)

Oracle把這個檢查點的scn儲存在每個資料檔案的檔案頭中,這個值稱為啟動scn,這個SCN用於用於在資料庫例項啟動

時,檢查是否需要執行資料庫恢復media recovery。

select name,checkpoint_change# from v$datafile_header;

4、終止scn (Stop SCN)

每個資料檔案的終止scn都儲存在控制檔案中。這個SCN號用於檢查資料庫啟動過程是否需要做instance recovery。

select name,last_change# from v$datafile;

5.media recovery和instance recovery

1).media recovery是需要利用以前的備份來進行恢復的,而INSTANCE RECOVERY是不需要的。

2).media recovery通常發生在資料庫的資料檔案之類發生損壞,需要利用以前的備份來進行的恢復,需要人工處理。

3).instance recovery則是發生在例項不正常關閉情況下的恢復,是INSTANCE自己來的,不需要人工干預的。

6、在資料庫執行期間的scn值

1).在資料庫開啟並執行之後,控制檔案中的系統檢查點、控制檔案中的資料檔案檢查點scn和每個資料檔案頭中的啟動scn都

是相同的。控制檔案中的每個資料檔案的終止scn都為null.

2).在安全關閉資料庫的過程中,系統會執行一個檢查點動作,這時所有資料檔案的終止scn都會設定成資料檔案頭中的那個

啟動scn的值。

3).在資料庫重新啟動的時候,Oracle將檔案頭中的那個啟動scn與資料庫檔案檢查點scn進行比較,如果這兩個值相互匹配,

oracle接下來還要比較資料檔案頭中的啟動scn和控制檔案中資料檔案的終止scn。如果這兩個值也一致,就意味著所有資料

塊多已經提交,所有對資料庫的修改都沒有在關閉資料庫的過程中丟失,因此這次啟動資料庫的過程也不需要任何恢復操作,

此時資料庫就可以開啟了。當所有的資料庫都開啟之後,儲存在控制檔案中的資料檔案終止scn的值再次被更改為null,這表

示資料檔案已經開啟並能夠正常使用了。   

7.SCN與資料庫啟動

在資料庫啟動過程中,當System Checkpoint SCN、Datafile Checkpoint SCN和Start SCN都相同時,資料庫可以正常啟

動,不需要做media recovery。三者當中有一個不同時,則需要做media recovery.如果在啟動的過程中,End SCN為NULL

,則需要做instance recovery。Oracle在啟動過程中首先檢查是否需要media recovery,然後再檢查是否需要instance 

reco  very。

8.SCN與資料庫關閉

如果資料庫的正常關閉的話,將會觸發一個checkpoint,同時將資料檔案的END SCN設定為相應資料檔案的Start SCN。當

資料庫啟動時,發現它們是一致的,則不需要做instance recovery。在資料庫正常啟動後,ORACLE會將END SCN設定為

NULL.如果資料庫異常關閉的話,則END SCN將為NULL。

9.系統正常關閉:

system scn=datafile scn=start scn=stop scn

1)system scn=datafile scn=start scn,不需要介質恢復

2)stopscn not null,不需要例項恢復

10.系統異常關閉:

system scn=datafile scn=start scn,stop scn null

1)system scn=datafile scn=start scn,不需要介質恢復

2)stopscn null,需要例項恢復

11.舊資料檔案

system scn=datafile scn>start scn,stop scn null/notnull

1)system scn=datafile scn>start scn,需要介質恢復成system scn=datafile scn=start scn

2)stopscn null,需要例項恢復,not null 不需要例項恢復

12.備份控制檔案

system scn=datafile scn<=start scn(當資料檔案為舊的相等),stop scn notnull/null

1)system scn=datafile scn<=start scn,需要使用using backup controlfile介質恢復成system scn=datafile scn=start 

scn=current log scn(當前日誌最大SCN)

2)為保證上一次恢復沒有用到log日誌不被使用,必須resetlogs

13.重建noresetlogs控制檔案

控制檔案中 datafile Checkpoint來自Online logs中的Current log頭

current log scn=system scn=datafile scn>=start scn,stop scn not null/null

1)current log scn=system scn=datafile scn>=start scn,需要介質恢復成system scn=datafile scn=start scn=redolog   

scn(當前日誌最大SCN),stop scn not null

2)stopscn not null 不需要例項恢復

14.重建resetlogs控制檔案

控制檔案中datafile Checkpoint來自各資料檔案頭。 

system scn>=datafile scn=start scn,stop scn not null/null

1)system scn>=datafile scn=start scn,需要使用using backup controlfile介質恢復成system scn=datafile scn=start 

scn(當前日誌最大SCN),stop scn not null

2)stop notnull,因為SCN已經為redolog scn,log已經不能使用,必須resetlogs

15.recover database using backup controlfile

如果丟失當前控制檔案,用冷備份的控制檔案恢復的時候,用來告訴oracle,不要以controlfile中的scn作為恢復的終點;

16.recover database until cancel

如果丟失current/active redo的時候,手動指定終點。

17.recover database using backup controlfile until cancel

如果丟失當前controlfile並且current/active redo都丟失,會先去自動應用歸檔日誌,可以實現最大的恢復;


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31374736/viewspace-2843133/,如需轉載,請註明出處,否則將追究法律責任。

相關文章