檢視系統的checkpoint動作
我們可以通過将LOG_checkpointS_TO_ALERT設定成TRUE來打開checkpoint的trace,這樣就可以跟蹤checkpoint的操作了。
ALTER SYSTEM SET LOG_checkpointS_TO_ALERT=TRUE;
這設定以後系統的checkpoint将會被記錄alert_$SID.log檔案中。
在V$DATAFILE_HEADER裡面也儲存了發生完全checkpoint的時候一些相關資訊,包括checkpoint發生時間、對應SCN已經checkpoint的次數。
select file# NO, status, tablespace_name, name, dbms_flashback.get_system_change_number CUR_SCN,
to_char(resetlogs_time, 'YYYY-MM-DD HH24:MI:SS')RST_DT, resetlogs_change# RST_SCN,
to_char(checkpoint_time, 'YYYY-MM-DD HH24:MI:SS')CKPT_DT, checkpoint_change# CKPT_SCN, checkpoint_count CKPT_CNT
from v$datafile_header;
完全檢查點
--我們先執行一個
ALTER SYSTEM checkpoint;
--下面是alert檔案中的資料結果
Mon Aug 4 22:22:082008
Beginning global checkpoint up to RBA [0x8.c9d4.10], SCN: 533714
Completed checkpoint up to RBA [0x8.c9d4.10], SCN: 533714
--我們能看到完全checkpoint發生的SCN 533714
--下面我們再對照下V$DATAFILE_HEADER中的結果
NO STATUS TABLESPACE_NAME CUR_SCN RST_DT RST_SCN CKPT_DT CKPT_SCN CKPT_CNT
--- ------- ---------------- -------- ------------------- -------- ------------------- --------- ---------
1 ONLINE SYSTEM 533790 2008-01-12 16:51:53 446075 2008-08-04 22:22:08 533714 66
2 ONLINE UNDOTBS1 533790 2008-01-12 16:51:53 446075 2008-08-04 22:22:08 533714 29
3 ONLINE SYSAUX 533790 2008-01-12 16:51:53 446075 2008-08-04 22:22:08 533714 66
4 ONLINE USERS 533790 2008-01-12 16:51:53 446075 2008-08-04 22:22:08 533714 65
5 ONLINE EXAMPLE 533790 2008-01-12 16:51:53 446075 2008-08-04 22:22:08 533714 25
--看到了麼,checkpoint時間和checkpoint的SCN已經被記錄到資料檔案頭中了。
日志切換時的檢查點
--我們先做一次日志切換
ALTER SYSTEM SWITCH LOGFILE;
--然後看看alert裡面的記錄
Mon Aug 4 22:31:39 2008
Beginning log switch checkpoint up to RBA [0x9.2.10], SCN: 534450
Thread 1 advanced to log sequence 9
Current log# 2 seq# 9 mem# 0: /u/app/oracle/oradata/orcl/redo02.log
Mon Aug 4 22:35:58 2008
Completed checkpoint up to RBA [0x9.2.10], SCN: 534450
--我們能看到checkpoint是在過了一段時間(這裡是4分鐘)之後才完成的
--接着我們來看下V$DATAFILE_HEADER中的結果
NO STATUS TABLESPACE_NAME CUR_SCN RST_DT RST_SCN CKPT_DT CKPT_SCN CKPT_CNT
--- ------- ---------------- -------- ------------------- -------- ------------------- --------- ---------
1 ONLINE SYSTEM 534770 2008-01-12 16:51:53 446075 2008-08-04 22:31:44 534450 67
2 ONLINE UNDOTBS1 534770 2008-01-12 16:51:53 446075 2008-08-04 22:31:44 534450 30
3 ONLINE SYSAUX 534770 2008-01-12 16:51:53 446075 2008-08-04 22:31:44 534450 67
4 ONLINE USERS 534770 2008-01-12 16:51:53 446075 2008-08-04 22:31:44 534450 66
5 ONLINE EXAMPLE 534770 2008-01-12 16:51:53 446075 2008-08-04 22:31:44 534450 26
--在這裡我們能發現下V$DATAFILE_HEADER裡面記錄的SCN和日志切換發生的checkpoint的SCN是一樣的,
--這就證明了日志切換是會更新資料檔案頭的,同時日志切換的checkpoint是一個級别比較低的操作,
--它不會立即完成,這也是出于性能上考慮的。
增量checkpoint檢視
這段話明天再實驗下目前所知隻有在LOG_checkpoint_TIMEOUT設定了非0值之後觸發的增量checkpoint會在alert檔案中有記錄,其他條件觸發的增量checkpoint都不會記錄在alert檔案中。
--下面是當LOG_checkpoint_TIMEOUT設定為1800s的時候所産生的增量checkpoint記錄
Sun Aug 3 19:08:56 2008
Incremental checkpoint up to RBA [0x8.e17.0], current log tail at RBA [0x8.1056.0]
Sun Aug 3 19:39:00 2008
Incremental checkpoint up to RBA [0x8.1be0.0], current log tail at RBA [0x8.1c6e.0]
Sun Aug 3 20:09:04 2008
Incremental checkpoint up to RBA [0x8.2af5.0], current log tail at RBA [0x8.2b6a.0]
Sun Aug 3 20:39:07 2008
Incremental checkpoint up to RBA [0x8.3798.0], current log tail at RBA [0x8.3851.0]
Sun Aug 3 21:09:10 2008
Incremental checkpoint up to RBA [0x8.47b9.0], current log tail at RBA [0x8.48bb.0]
Sun Aug 3 21:39:14 2008
Incremental checkpoint up to RBA [0x8.548d.0], current log tail at RBA [0x8.5522.0]
Mon Aug 4 21:05:18 2008
檢視fast_start_mttr_target
通過檢視V$INSTANCE_RECOVERY動态性能視圖可以檢視一些MTTR相關的資訊。
SELECT TARGET_MTTR,ESTIMATED_MTTR,CKPT_BLOCK_WRITES,CKPT_BLOCK_WRITES FROM V$INSTANCE_RECOVERY
TARGET_MTTR
使用者設定的參數FAST_START_MTTR_TARGET的值.
ESTIMATED_MTTR
根據目前髒塊數目和日志塊數目,評估的現在進行恢複所需要的時間.
CKPT_BLOCK_WRITES
檢查點寫完的塊數目.
CKPT_BLOCK_WRITES
額外的因為檢查點引起的資料庫寫入操作(因為不必要的檢查點的産生,設定一個非常小的系統恢複時間将會對性能産生負面影響,為了幫助管理者監測這個參數設定較小時對資料庫的影響,這個視圖顯示了這個列)