備份與恢復 - Low cache RBA和On disk RBA的區別

tolywang發表於2011-04-19

 

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程式更新控制檔案的進度是不同的。

 

----------------------------------------------------------------------------

轉載網路上的 dump 控制檔案資訊 :


CHECKPOINT PROGRESS RECORDS

***************************************************************************

 (size = 8180, compat size = 8180, section max = 11, section in-use = 0,

  last-recid= 0, old-recno = 0, last-recno = 0)

 (extent = 1, blkno = 2, numrecs = 11)

THREAD #1 - status:0x2 flags:0x0 dirty:48

low cache rba:(0x27.6c.0) on disk rba:(0x27.f9.0)

on disk scn: 0x0000.001195a5 09/10/2010 14:55:25

resetlogs scn: 0x0000.00089c75 07/31/2010 16:35:52

heartbeat: 729376761 mount id: 570757625

 

恢復從39號日誌檔案的第108塊恢復至249塊(RBA地址範圍):

RBA資訊

Log Sequence

Blcok Number

Low Cache RBA

0x27.6c.0

0x27 = 39

6c=108

On Disk RBA

0x27.f9.0

0x27=39

F9=249

 

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

相關文章