【TUNE_ORACLE】Oracle检查点(三)增量检查点四个关键参数介绍

来源:这里教程网 时间:2026-03-03 16:52:59 作者:

说明

检查点系列相关文章地址:

Oracle检查点(一)检查点(Checkpoint)概念介绍: http://blog.itpub.net/69992972/viewspace-2787595/

Oracle检查点(二)检查点性能: http://blog.itpub.net/69992972/viewspace-2787789/

Oracle检查点(三)增量检查点四个关键参数介绍: http://blog.itpub.net/69992972/viewspace-2787943/

Oracle检查点(四)检查点对redo日志的影响和redo日志大小设置建议: http://blog.itpub.net/69992972/viewspace-2788206/

Oracle检查点(五)创建并利用Statspack定位检查点故障: http://blog.itpub.net/69992972/viewspace-2788418/ 增量检查点关键的四个参数 ###################################################### 注意:日志文件切换将始终覆盖由以下四个参数引起的检查点!# ##################################################### 1. FAST_START_MTTR_TARGET(重要参数)自 Oracle 9i 以来, FAST_START_MTTR_TARGET参数已成为优化增量检查点目标的 首选方法。通过 FAST_START_MTTR_TARGET,可以指定数据库执行单实例的崩溃恢复所要花费的秒数。基于内部统计信息,增量检查点会自动调整检查点目标,以满足 FAST_START_MTTR_TARGET的要求。1)查看动态性能视图V$INSTANCE_RECOVERY.ESTIMATED_MTTR可以显示当前预计的平均恢复时间 (MTTR)(以秒为单位)。即使未指定 FAST_START_MTTR_TARGET,也同样会显示此值。2) 查看动态性能视图V$INSTANCE_RECOVERY.TARGET_MTTR可以显示由系统强制执行的有效 MTTR 目标(以秒为单位)。3) 查看动态性能视图V$MTTR_TARGET_ADVICE可以显示在当前的 MTTR 设置下由当前的工作负载产生的 I/O 数量,以及在其他 MTTR 设置下将由当前的工作负载产生的预计 I/O 数量。此视图可帮助我们在运行时性能和设置 FAST_START_MTTR_TARGET 以实现快速恢复之间进行权衡。 2. LOG_CHECKPOINT_INTERVALLOG_CHECKPOINT_INTERVAL 参数指定增量检查点目标滞后于当前日志尾的最多 redo 块数量。 如果指定了 FAST_START_MTTR_TARGET,就不应设置 LOG_CHECKPOINT_INTERVAL 或将其设置为0。在大多数 Unix 系统上, 操作系统块大小都是 512 字节。比如,将 LOG_CHECKPOINT_INTERVAL 的值设置为 10000 就意味着增量检查点目标相对于当前日志尾的滞后不得超过 5M。以此计算,如果 redo 日志的大小为50M,则会对每个日志产生10个检查点。LOG_CHECKPOINT_INTERVAL也会影响检查点的发生时间,所以需要保持其随 redo 日志文件的大小变化而更新。检查点的频率是影响数据库从意外故障中恢复所需时间的因素之一。 检查点之间的间隔越长,则在发生系统崩溃时,数据库恢复所需的时间就越长。检查点间隔越短意味着数据库的恢复速度越快,但是代价是检查点操作会消耗更多的资源。 另外,此参数还会影响在恢复的前滚阶段期间完成数据库恢复操作所需的时间。实际的恢复时间取决于此时间和其他因素,例如,故障类型(实例或系统崩溃、介质故障等)以及需要应用的归档 redo 日志数量。 3. LOG_CHECKPOINT_TIMEOUTLOG_CHECKPOINT_TIMEOUT 参数指定增量检查点目标应滞后于当前日志尾的最长秒数。换句话说,它指定缓冲区缓存中的脏缓存可以保持脏状态的时间。检查点频率影响数据库从意外故障中恢复所需的时间。检查点之间的间隔越长,数据库恢复所需的时间就越多。 Oracle官方建议使用 LOG_CHECKPOINT_INTERVAL 而不是 LOG_CHECKPOINT_TIMEOUT 来控制检查点间隔,后者会每“n”秒启动一次检查点,而不管事务频率。这可能会导致在事务量变化的情况下出现不必要的检查点。只要出现这个可能,就必须避免不必要的检查点,以实现最佳性能。 注:许多人会有这样一种误解:将 LOG_CHECKPOINT_TIMEOUT 设置为给定值之后,系统就会按该间隔启动日志切换,从而启用用于standby数据库配置的恢复窗口。 日志切换会引起检查点,但检查点并不会引起日志切换 引起日志切换的唯一方式是使用 ALTER SYSTEM SWITCH LOGFILE 进行手动操作或重新调节 redo 日志大小,以引起更为频繁的切换。这由操作系统块而非时间间隔控制。因此, 在线 redo 日志的大小对性能和恢复至关重要!不能过大,也不能过小。 4. LOG_CHECKPOINTS_TO_ALERT通过 LOG_CHECKPOINTS_TO_ALERT,我们可以将检查点记录到alert日志中。这样做有助于确定检查点是否按所需频率发生。注:1)从Oracle9i开始,此参数变为动态参数。2)Oracle 通常建议将此参数设置为 TRUE,因为开销很小,可以忽略不计,但alert日志中的信息可能会非常有用。

相关推荐