Low cache RBA和On disk RBA的區別

oracle_ace發表於2007-12-28

low cache rba
就是CKPT記錄的DBWR寫出的進度,也就是更新到控制檔案和資料檔案的進度記錄,對於增量檢查點,因為我們都知道,當checkpoint發生的時候,ckpt程式會通知dbwn程式去寫出dirty buffer,但是需要特別注意的是ckpt程式通知dbwn程式後,並不需要等待dbwn寫到當前觸發檢查點那個時候的scn後,再去更新當前控制檔案和資料檔案的scn(當然ckpt是有心跳的,通過心跳ckpt程式可以監視dbwn寫的進度),而是將當前剛剛寫完的dirty buffer(寫多少算多少,寫完那個算那個)對應的scn更新到資料檔案和控制檔案當中,我們都知道修改的data buffer會被移動到checkpoint queue中,當然這個dirty buffer是在checkpoint queue中按照low rba的先進先出的順序寫出的,無論後來對這個buffer做了多少次修改,他在queue中的寫出順序是不會被改變的。那麼每3秒鐘,ckpt還會去更新控制檔案和資料檔案的heartbeat值。那麼實際上每隔3秒,也會觸發檢查點,但是,這樣的操作並沒有被oracle正式作為一種檢查點的觸發方式列入文件 ,因為這個3秒記錄的是dbwr的寫的進度而不是通知讓dbwr去寫出。

on disk rba就是LGWR的寫進度。


如果資料庫carsh了,low cache rba是恢復的起點,on disk rba是恢復的終點。

分析:
dbwr成功寫完後並不會把當前的此刻scn資訊寫到控制檔案中,只有CKPT才更新控制檔案和資料檔案頭,dbwr只要成功將dirty data寫入資料檔案就是成功, CKPT只要能將最新DBWR寫完的SCN更新到控制檔案和資料檔案頭就算成功。但是由於CKPT程式不是實時更新dbwr寫完的scn到控制檔案中,而是採用每3妙更新一次的策略,因此最後有ckpt程式寫進控制檔案的scn資訊有可能不是當前dbwr剛剛寫完的scn值。這點應該注意,也就是說dbwr寫的進度與ckpt程式更新控制檔案的進度是不同的。

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

相關文章