ORACLE增量檢查點,LRBA,BWR

wei-xh發表於2010-05-08

說是DBWR會依據LRBA順序將髒塊重新整理輸出到磁碟
如果按如下順序更新
RBA :692.2998.10
Update table set name=low(name) where id=2;
------塊1
RBA :692.3015.10
Update table set name=low(name) where id=4;
------塊2
RBA :692.3024.10
Update table set name=low(name) where id=7;
------塊3
RBA :692.3033.10
Update table set name=low(name) where id=3;
------塊1
RBA :692.3102.10
Update table set name=low(name) where id=10;
------塊4
RBA :692.3127.10
Update table set name=low(name) where id=13;
------塊5
RBA :692.3136.10
塊一應該在檢查點佇列的最前面,它應該最先被輸出到硬碟,可它的輸出會連同RBA:692.3033.10(它也修改的塊一)也重新整理輸出。
假如塊一輸出後,系統斷電,那麼在資料庫恢復的時候會從RBA:692.3024.10(第二個UPDATE語句)開始恢復,可是恢復到:RBA:692.3033.10的時候,由於塊一已經重新整理輸出了,ORACLE還會應用這條重做記錄嗎?

不會的其實,ORALCE每寫一個髒快,會在日誌裡增加一跳bwr記錄。代表這個塊已經被寫到磁碟。

而且在根據checkpoint queue寫的時候,每三秒還會在控制檔案裡記錄LRBA的資訊。下次恢復的時候,這個LRBA就是恢復起點,再透過BWR的協作,就能完成例項恢復了。

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

相關文章