觸發DBWR程式寫髒資料塊到資料檔案的幾個條件

tolywang發表於2010-04-08

 

DBWR作為一個後臺程式,只有在某些條件滿足了才會觸發。這些條件包括:

1) 當程式在輔助LRU連結串列和主LRU連結串列上掃描以查詢可以覆蓋的buffer header時,如果已經掃描的buffer header的數量到達一定的限度(由隱藏引數:_db_block_max_scan_pct決定)時,觸發DBWR程式。 _db_block_max_scan_pct表示已經掃描的buffer header的個數佔整個LRU連結串列上buffer header總數的百分比。這時,搜尋可用buffer header的程式掛起,在v$session_wait中表現為等待“free buffer wait”事件,同時增加v$sysstat中的“dirty buffers inspected”的值。

2) 當DBWR在主LRUW連結串列上查詢已經更新完而正在等待被寫入資料檔案的buffer header時,如果找到的buffer header的數量超過一定限度(由隱藏引數:_db_writer_scan_depth_pct決定)時,DBWR就不再繼續往下掃描了,而轉到輔助 LRUW連結串列上將其上的髒資料塊寫入資料檔案。_db_writer_scan_depth_pct表示已經掃描的髒資料塊的個數佔整個主LRUW連結串列上 buffer header總數的百分比。

3) 如果主LRUW連結串列和輔助LRUW連結串列上的髒資料塊的總數超過一定限度,也將觸發DBWR程式。該限度由隱藏引數:_db_large_dirty_queue決定。
4) 發生增量檢查點(incremental checkpoint)或完全檢查點(complete checkpoint)時觸發DBWR。
5) 每隔三秒鐘啟動一次DBWR。
6) 將表空間設定為離線(offline)狀態時觸發DBWR。
7) 發出命令:alter tablespace … begin backup,從而將表空間設定為熱備份狀態時觸發DBWR。
8) 將表空間設定為只讀狀態時,觸發DBWR。
9) 刪除物件時(比如刪除某個表)會觸發DBWR。

原帖:http://blog.csdn.net/cn_chenfeng/archive/2007/09/04/1771650.aspx

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

相關文章