什麼是checkpoint?
checkpoint是一個數據庫事件它將已修改的數據從高速緩存刷新到磁盤並更新控制文件和數據文件
什麼時候發生checkpoint?
我們知道了checkpoint會刷新髒數據但什麼時候會發生checkpoint呢?以下幾種情況會觸發checkpoint
當發生日志組切換的時候
當符合LOG_CHECKPOINT_TIMEOUTLOG_CHECKPOINT_INTERVALfast_start_io_targetfast_start_mttr_target參數設置的時候
當運行ALTER SYSTEM SWITCH LOGFILE的時候
當運行ALTER SYSTEM CHECKPOINT的時候
當運行alter tablespace XXX begin backupend backup的時候
當運行alter tablespace datafile offline的時候;
增量檢查點(incremental checkpoint)
oracle以後推出了incremental checkpoint的機制在以前的版本裡每次checkpoint時都會做一個full thread checkpoint這樣的話所有髒數據會被寫到磁盤巨大的i/o對系統性能帶來很大影響為了解決這個問題oracle引入了 checkpoint queue機制每一個髒塊會被移到檢查點隊列裡面去按照low rdb(第一次對此塊修改對應的redo block address)來排列靠近檢查點隊列尾端的數據塊的low rba值是最小的而且如果這些贓塊被再次修改後它在檢查點隊列裡的順序也不會改變這樣就保證了越早修改的塊越早寫入磁盤每隔秒鐘ckpt會去更新控制文件和數據文件記錄checkpoint執行的情況
數據字典
完全檢查點
select * from X$KCCRT where indx=;
這裡顯示了上一次的完全檢查點是在// ::發生所以我們推斷// ::發生了一次日志切換再去操作系統上去看生產的歸檔果然有一個歸檔生產
rwr oracle oinstall Jun : _dbf
增量檢查點
SQL> select * from X$KCCCP where indx=;
這裡顯示了lowrbaondisk rbacheckpoint time等信息
From:http://tw.wingwit.com/Article/program/Oracle/201311/18348.html