Oracle DBWR程式

tolywang發表於2007-03-30

觸發DBWR程式的事件:


1.當使用者程式在LRU列表中搜尋了一定數量的快取塊後,仍然沒有找到可用的空閒快取塊,DBWR程式將啟動,把髒快取塊寫入資料檔案。
2.Checkpoint發生時,DBWR程式把所有的髒快取塊從LRU列表中移入到寫入列表,並寫入到資料檔案。
3.資料庫快取塊中的寫入列表的長度達到一定值的時候,DBWR將寫入列表中的髒快取塊寫入資料檔案。
4.每過3秒鐘,DBWR把髒快取塊從LRU列表移到寫入列表,一旦寫入列表長度達到一定值,DBWR便將資料寫入資料檔案。
5.當表空間offline時,DBWR把所有屬於該表空間的髒快取塊從LRU列表移到寫入列表,並且開始寫入資料檔案。
6.當表空間開始熱備時,DBWR把所有屬於該表空間的髒快取塊從LRU列表移到寫入列表,並且開始寫入資料檔案。


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

我們已經知道DBWR程式負責將髒資料塊寫入磁碟。這些條件包括:1) 當程式在輔助LRU連結串列和主LRU連結串列上掃描以查詢可以覆蓋的buffer header時,如果已經掃描的buffer header的數量到達一定的限度(由隱藏引數:_db_block_max_scan_pct決定)時,觸發DBWR程式。2) 當DBWR在主LRUW連結串列上查詢已經更新完而正在等待被寫入資料檔案的buffer header時,如果找到的buffer header的數量超過一定限度(由隱藏引數:_db_writer_scan_depth_pct決定)時,DBWR就不再繼續往下掃描了,而轉到輔助LRUW連結串列上將其上的髒資料塊寫入資料檔案。

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

相關文章