Oracle log_checkpoint_interval和

perfychi發表於2013-04-07

9i以後可能大家都喜歡透過設定fast_start_mttr_target來控制 instance recovery的粒度。但是仍然有兩個引數一直影響著我們的checkpoint,就是log_checkpoint_interval和 log_checkpoint_timeout  
log_checkpoint_interval
8.1版本後log_checkpoint_interval指的是兩次checkpoint之間運算元據塊的個數。 checkpoint時把 記憶體裡修改過的資料塊用DBWR寫到物理檔案,用LGWR寫到日誌(在8i的時候lgwr程式在兼有ckpt程式的 作用,呵呵。為了減輕我們本來就可能在高壓情況下疲於奔命的LGWR兄弟的負擔,Oracle引入了ckpt來更新我們的控制檔案和資料檔案頭的SCN信 息)。  
一般UNIX作業系統的資料塊為512bytes。  
從效能最佳化的角度來說,建議log_checkpoint_interval=redologfilesizebytes/512bytes,根據我們的 online redo file的大小來指定我們資料塊的個數.假設LOG_CHECKPOINT_INTERVAL 設定為2000,也就是說,當產生的日誌量1m之後,就會觸發一個checkpoint。我們可以透過設定 log_checkpoints_to_alert =true進行觀察測試。
from concept:
LOG_CHECKPOINT_INTERVAL specifies the frequency of checkpoints(用來指定檢查點發生的頻率) in terms of the number of redo log file blocks that can exist between an incremental checkpoint and the last block written to the redo log. This number refers to physical operating system blocks, not database blocks.
Regardless of this value, a checkpoint always occurs when switching from one online redo log file to another. Therefore, if the value exceeds the actual redo log file size, checkpoints occur only when switching logs. Checkpoint frequency is one of the factors that influence the time required for the database to recover from an unexpected failure. 
log_checkpoint_timeout  
Oracle8.1版本後log_checkpoint_timeout指的是兩次checkpoint之間時間秒數(單位是秒)。  
Oracle建議不用這個引數來控制,因為事務(transaction)大小不是按時間等量分佈的(事務的長短並不是最重要的,重要的是我們的業務邏輯和資料的完整性)。那麼我們用log_checkpoint_interval引數控制會更好一些。  

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

相關文章