Release 9i introduced a new parameter, FAST_START_MTTR_TARGET, that makes controlling instance recovery time a trivial exercise. You specify it in seconds, and Oracle will then ensure that DBWn writes out blocks at a rate sufficiently fast that if the instance crashes, the recovery will take no longer than that number of seconds. So the smaller the setting, the harder DBWn will work in an attempt to minimize the gap between the checkpoint position and real time. But note that it is only a target—you can set it to an unrealistically low value, which is impossible to achieve no matter what DBWn does. Database Control also provides an MTTR advisor, which will give you an idea of how long recovery would take if the instance failed. This information can also be obtained from the view V$INSTANCE_RECOVERY.
Setting FAST_START_MTTR_TARGET to a nonzero value has two effects. First, it sets a target for recovery, as described in the preceding section. But there is also a secondary effect: enabling checkpoint auto-tuning. The checkpoint auto-tuning mechanism inspects statistics on machine utilization, such as the rate of disk I/O and CPU usage, and if itappears that there is spare capacity, it will use this capacity to write out additional dirty buffers from the database buffer cache, thus pushing the checkpoint position forward. The result is that even if the FAST_START_MTTR_TARGET parameter is set to a high value (the highest possible is 3600 seconds—anything above that will be rounded down), actual recovery time may well be much less.
Enabling checkpoint auto-tuning with a high target should result in your instance always having the fastest possible recovery time that is consistent with maximum performance.
The view v$instance_recovery can give you much information regarding the instance recovery cost.
SQL> 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