zoukankan      html  css  js  c++  java
  • [每日一题] 11gOCP 1z0-052 :2013-09-3 Because of frequent checkpoints...........................A30

    转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/11022433

    正确答案:BC

     这里我就偷一下懒了,引用

    http://www.itpub.net/thread-1813872-1-1.html

    itpub 7楼一位兄弟的解释

    我个人认为是这样的:
    checkpoint过程
    1、checkpoint触发条件,记录rba,rba包括cache low rba和on disk rba,这里指的是on disk rba(lgwr 最后写日志文件的地址)
    2、checkpoint进程通知DBWn进程将所有cache low rba和on disk rba之间的脏块写入磁盘
    3、确定脏块都被写入磁盘以后,更新checkpoint信息到数据文件和控制文件中。

    normal checkpoint触发条件
    1、alter system switch logfile(自动或手动)。
    2、alter system checkpoint。
    3、alter tablespace tablespace_name begin backup或alter tablespace tablespace_name end backup。
    4、alter tablespace tablespace_name read only。
    5、shutdown。

    increment checkpoint触发条件
    1、fast_start_mttr_target
    2、log_checkpoint_timeout
    3、log_checkpoint_interval
    4、90% OF SMALLEST REDO LOG

    综上所述,答案应该是b和c,如果redo size过小,那么会频繁的切换,从而导致频繁的checkpoint;如果fast_start_mttr_target设置的过小,比如设置为1,那么就意味着数据库估算的恢复时间超过1秒就会产生checkpoint,也会频繁的产生checkpoint,答案d只会解决磁盘些的性能问题,而不是checkpoint切换的内存问题,答案a是不可能的。


    我对检查点的一点补充:


    检查点队列(检查点只是一个数据库事件,它存在的根本意义在于减少崩溃恢复时间),在BH中有一个ckptq项,双向链表.

      (1)只有脏块才会在检查点队列中,非脏块的ckptq为空。

      (2)当块首次被更改时,块会立即被加进检查点队列。 如果检查点队列中的脏块再次被修改,并不会改变其在

    检查点队列中的位置。

      (3)检查点队列中脏块的排列顺序:根据第2点,所有脏块按照首次被更改的时间的顺序排列。 更准确点说:按

     照块的lrba排列。

    参与检查点的进程主要包括lgwr、dbwn和ckpt,分为两大类:完全检查点和增量检查点
      (1)完全检查点主要包括以下步骤:
      ①首先,在日志缓冲中确定当前的(也就是最新的)重做记录,提取其RBA与SCN作为检查点目标
      ②LGWR清空日志缓存,将重作记录写入在线日志
      ③DBWn进程将检查点目标(RBA与SCN)产生的及检查点目标之前产生的脏数据块,按RBA的顺序写入数据文件
      ④最后,CKPT进程将检查点目标(RBA与SCN)写入数据文件的头部和控制文件
     
      (2)触发完全检查点的条件:
        ①执行shutdown immediate命令
        ②执行alter system checkpoint命令
        ③LGWR切换在线日志,不论是因为日志写满还是执行alter system switch logfile命令
        ④执行部分表空间维护命令:alter tablespace ...offline|online


    增量检查点并不会去更新数据文件头,而只是每3秒由CKPT进程去更新控制文件中的LRBA和SCN
     (1)增量检查点主要包含以下步骤
        ①CKPT每3秒一次记录检查点位置的工作(更新控制文件)
        ②CKPT定期触发DBWR
     (2)增量检查点的意义有以下两个:
       ①减少发生完全检查点时DBWn进程的工作负担
       ②提高实例恢复的速度


    QQ:252803295

    学习交流QQ群:
    DSI&Core Search  Ⅰ 群:127149411(技术:已满)
    DSI&Core Search  Ⅱ 群:177089463(技术:未满)
    DSI&Core Search  Ⅲ 群:284596437(技术:未满)
    DSI&Core Search  Ⅳ 群:192136702(技术:未满)
    DSI&Core Search  Ⅴ 群:285030382(闲聊:未满)



    MAIL:oracledba_cn@hotmail.com

    BLOG: http://blog.csdn.net/guoyjoe

    WEIBO:http://weibo.com/guoyJoe0218

    ITPUB: http://www.itpub.net/space-uid-28460966.html

    OCM:   http://education.oracle.com/education/otn/YGuo.HTM

      

  • 相关阅读:
    使用内部单向链表实现的一个简单堆栈
    通过反射调用内部类的隐藏方法
    动态代理生成空对象
    通过使用java.lang.reflect.Proxy实现动态代理
    简单代理模式
    暗色CSS,适用与Stylish, IE, FF, OPERA等.
    CWnd派生的控件处理MouseMove, MouseHover, MouseLeave
    _tcscpy_s的size应至少为src的长度+1(要把计算在内)
    用INET(CHttpFile)下载有重定向链接时获取最终URL的方法.
    GetDlgItem以及其他获得CWnd相关的函数要注意。。
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3301570.html
Copyright © 2011-2022 走看看