fast_start_mttr_target是一个可以缩短实例恢复时间的参数,默认值是零:
SYS@orcl 08-SEP-14>show parameter fast_start_mttr_target
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
fast_start_mttr_target integer 0
当值为零,表示没有设置强制检查点间隔,强制检查点间隔由系统自己控制。
假设我们把这个值设置成300s:
SYS@orcl 08-SEP-14>alter system set fast_start_mttr_target=300;
System altered.
SYS@orcl 08-SEP-14>show parameter fast_start_mttr_target
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
fast_start_mttr_target integer 300
那么当实例崩溃之后,系统进行实例恢复的时间就应该在300s之内。
需要注意的是,这个值应该要设置合理,如果太大,那么会让实例恢复的时间过长。如果设置过小,那么系统会在很短时间内及时将大量数据写入,
这会增加系统的I/O。
fast_start_mttr_target的值实际上也是一个触发检查点发生的条件,当内存中产生的dirty buffer所需要恢复的时间estimated_mttr达到fast_start_mttr_target指定的时间,那么检查点进程就会被触发,检查点进程一旦被触发,就会通知DBWn按照检查点顺序将脏数据写入到数据文件。从而缩短了最后检查点位置和联机重做日志间的距离,减少实例恢复的时间。
SYS@orcl 08-SEP-14>desc v$instance_recovery
Name Null? Type
----------------------------------------- -------- ----------------------------
RECOVERY_ESTIMATED_IOS NUMBER
ACTUAL_REDO_BLKS NUMBER
TARGET_REDO_BLKS NUMBER
LOG_FILE_SIZE_REDO_BLKS NUMBER
LOG_CHKPT_TIMEOUT_REDO_BLKS NUMBER
LOG_CHKPT_INTERVAL_REDO_BLKS NUMBER
FAST_START_IO_TARGET_REDO_BLKS NUMBER
TARGET_MTTR NUMBER
ESTIMATED_MTTR NUMBER
CKPT_BLOCK_WRITES NUMBER
OPTIMAL_LOGFILE_SIZE NUMBER
ESTD_CLUSTER_AVAILABLE_TIME NUMBER
WRITES_MTTR NUMBER
WRITES_LOGFILE_SIZE NUMBER
WRITES_LOG_CHECKPOINT_SETTINGS NUMBER
WRITES_OTHER_SETTINGS NUMBER
WRITES_AUTOTUNE NUMBER
WRITES_FULL_THREAD_CKPT NUMBER
SYS@orcl 08-SEP-14>select recovery_estimated_ios,
2 actual_redo_blks,target_redo_blks,target_mttr
3 from v$instance_recovery;
RECOVERY_ESTIMATED_IOS ACTUAL_REDO_BLKS TARGET_REDO_BLKS TARGET_MTTR
---------------------- ---------------- ---------------- -----------
59 271 1198 37