ITPub博客

首页 > IT职业 > IT生活 > 对checkpoint的理解一文的学习

对checkpoint的理解一文的学习

原创 IT生活 作者:jolly10 时间:2008-04-29 12:08:50 0 删除 编辑

checkpoint的作用是什么? 看这了篇文章受益颇多.

http://space.itpub.net/7199859/viewspace-255305

[@more@]

log switch会触发一个检查点,在检查点完成之前,日志文件是不能够被重用的,状态也就是active,那么什么时间才会inactive?

今天对这个问题有了更深的理解:

其实通常所说的logfile switch 触发检查点,实际上就是给出一个标记,而并不真正去写脏块。等待增量检查点做到了那个标记,再标识完成。

所以触发增量检查点的时机就显的尤为重要:

90% OF THE SMALLEST REDO LOGFILE

意味着最后一次增量检查点与当前日志文件末尾所差的redo block数量如果超过最小redo log的90%?敲淳突岽シ⒃隽考觳榈恪?/p>

FAST_START_MTTR_TARGET:实例恢复的时间限制,
oracle将这个时间换算成redo blocks数量,当log buffer中未写入log file的redo block数量超过这个值,就会触发增量检查点。


FAST_START_IO_TARGET:实例恢复所需要读取的redo blocks数量,当log buffer中未写入log file的redo block数量超过这个值,就会触发增量检查点。

LOG_CHECKPOINT_TIMEOUT:2次增量检查点的时间间隔。


LOG_CHECKPOINT_INTERVAL:最后一次增量检查点与当前日志文件末尾所差的redo block数量。

注意:增量检查点并不是将脏列表中的所有脏块都写出到数据文件中,而是写出一部分,保证满足所有条件即可。

也学了两个重要的视图,v$instance_recovery 和x$kcccp

看看当前各个增量检查点触发条件的值:

SQL> select actual_redo_blks act,target_redo_blks target,LOG_FILE_SIZE_REDO_BLKS logfile,LOG_CHKPT_TIMEOUT_REDO_BLKS log_check,target_mttr tmttr,estimated_mttr es_mttr from v$instance_recovery;

62967 170577 184320 170577 0 14

--LOG_FILE_SIZE_REDO_BLKS的值是184320,这正好是日志文件的90%
--日志块是0.5K一个,换算成M,184320*0.5/1024=90 日志文件是100M

--再看一下最后一次检查点的位置:
SQL> select CPLRBA_SEQ,CPLRBA_BNO,CPODR_SEQ,CPODR_BNO from x$kcccp;

CPLRBA_SEQ CPLRBA_BNO CPODR_SEQ CPODR_BNO
---------- ---------- ---------- ----------

47 107610 47 170607

--最后一次检查点发生在47号日志的17610块,当前日志也是47号,日志尾在170607块

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/271283/viewspace-1003154/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 调整共享池(zt)
请登录后发表评论 登录
全部评论

注册时间:2008-02-20

  • 博文量
    263
  • 访问量
    826732