觸發LGWR程式寫日誌的4個條件

oracle_ace發表於2007-12-12
總結一下Redo寫的觸發條件:
*******************************
1,每三秒鐘超時(timeout):
當LGWR處於空閒狀態時,它依賴於rdbms rpc message等待事件,處於休眠狀態,直到三秒時間到,如果這個時候LGWR發現有Redo資訊需要寫出的話,那麼LGWR將執行寫的操作,log file parallel write等待事件將會出現。
 
2.閥值的達到:
Redo log buffer 1/3 滿;
Redo log buffer 擁有 1MB 的髒資料;
引數_log_io_size的設定很重要,一般為log_buffer的1/3大小
 
3.使用者提交:
當一個transaction提交的時候,在Redo stream中將記錄一個提交標誌。在這些Redo被寫到磁碟上之前,這個transaction是不能恢復的。所以,在transaction返回成功標誌之前,必須等待LGWR寫的完成。程式通知LGWR寫,並且以log file sync事件開始休眠。超時為1秒
 
4.在DBWn寫之前:
如果DBWR將要寫出的資料的高RBA超過LGWR的on-disk RBA,則DBWR將通知LGWR執行寫的操作,在Oracle8i之前,此時DBWR將等待Log file sync事件。從Oracle8i開始,DBWR把這些block(將要寫出的block,這種block的高RBA超過了LGWR的on-disk RBA)放入defer佇列中,同時通知LGWR執行Redo寫出。
 
注:
log buffer space等待事件說明log buffer空間不夠用了。

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

相關文章