深入剖析 - Oracle SCN機制詳細解讀
創新互聯建站是一家專注于網站設計制作、成都做網站與策劃設計,鼎城網站建設哪家好?創新互聯建站做網站,專注于網站建設10多年,網設計領域的專業建站公司;建站業務涵蓋:鼎城等地區。鼎城做網站價格咨詢:028-86922220
https://mp.weixin.qq.com/s?__biz=MjM5MDAxOTk2MQ==&mid=2650276971&idx=1&sn=b5fb89b351d5b5bedd6353ff9c0b2157&chksm=be479c7d8930156bf73bd87f0bac869029f7341b3fdb4ed26a838b4e401c811116669acd5499&mpshare=1&scene=24&srcid=0927zxmXBLuBo3yxm7qsFYOy#rd
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都丟失,會先去自動應用歸檔日志,可以實現最大的恢復;
網頁題目:recoverdatabaseusingbackupcontrolfile理解
鏈接地址:http://vcdvsql.cn/article4/podooe.html
成都網站建設公司_創新互聯,為您提供建站公司、網站營銷、網站內鏈、、云服務器、微信公眾號
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯