CKPT、DBWn、LGWR與3S的關係

ogam發表於2009-05-27

CKPT、DBWn、LGWR都有3S的觸發條件,但具體觸發內容是不盡相同的。

LGWR每3S觸發一次,將REDO BUFFER內容寫入REDO LOG GROUP;

CKPT每3S會觸發一次,它完成兩個任務:1、告訴DBWn程式,寫髒資料將要寫到哪個位置,但不觸發DBWn;2、更新控制檔案關於DBWn程式寫入髒資料的進度;

DBWn 觸發條件中也有個每3S醒來一次,完成向資料檔案寫入髒資料的操作,但這裡3S應該與CKPT的3S觸發條件不是一回事;

[@more@]

CKPT中的3秒和增量檢查點不是一個概念,3秒只是在控制檔案中,ckpt 程式去更新當前 dbwr寫到哪裡了,這個對於 ckpt 程式來說叫 heartbeat ,heartbeat是3秒一次,3秒可以看作不停的檢查並記錄檢查點執行情況(DBWR的寫進度)。

完全檢查點是由ckpt程式等待dbwr程式寫入dirty queue在某個scn之前的所有資料, 所以會有一個瞬時的io比較大的傾向..

增量檢查點, 是dbwr根據相關引數的設定來檢查需要寫入的dirty queue上的block, ckpt程式在增量檢查點的時候記錄dbwr最近寫資料塊的時候的對應的scn, 增量檢查點不會等待dbwr的寫操作(或者說dbwr的寫操作是不受增量檢查點控制的).

完全檢查點的觸發條件有:
1、資料庫乾淨的關閉
2、當透過設定初始化引數LOG_CHECKPOINT_INTERVAL、LOG_CHECKPOINT_TIMEOUT 和FAST_START_IO_TARGET 強制時;
3、ALTER SYSTEM CHECKPOINT
4、表空間離線;
5、ALTER SYSTEM SWITCH LOGFILE
  一般正常執行期間的資料庫不會產生完全檢查點,下面很多事件將導致增量檢查點,發出這樣的命令:
l ALTER TABLESPACE tablespace_name BIGEN BACKUP & end backup;
l ALTER TABLESPACE tablespace_name READ ONLY;
l ALTER TABLESPACE tablespace_name OFFLINE NORMAL;
等命令都會觸發增量檢查點。

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

相關文章