• Oracle SCN是什么


    SCN是什么?The System Change Number
      system change number (SCN)是一个非常重要的标记,Oracle使用它来标记数据库在过去时间内的状态和轨迹。

    Oracle使用SCN来保存所有变化的轨迹。SCN是一个逻辑时钟来记录数据库事件。它非常的重要,并不是只是为了恢复。
    SCN有点类似于sequence,Oracle在SGA中增加它。当一个事务修改或者插入数据,Oracle首先写入一个新的SCN到回滚段中。log writer进程立刻把提交的记录写入到重做日志中,这条提交的记录将拥有唯一的SCN。事实上,把SCN写入到日志,就意味着一个事务的完成。SCN帮助Oracle决定在一次突然中断或者SHUTDOWN ABORT后,是否需要一个崩溃恢复。每当数据库发生checkpoint,Oracle 写一个START SCN命令到数据文件头。控制文件维护着每个数据文件
    的SCN,称为STOP SCN,通常是无穷大,每当实例正常关闭(SHUTDOWN NORMAL or SHUTDOWN IMMEDIATE),Oracle会复制数据文件头START SCN到控制文件的STOP SCN。如果是正常的重启数据库,是不需要恢复的,因为控制文件和数据文件的SCN是吻合的。反之,突然中断系统就没法同步SCN,SCN不匹配,Oracle就认为需要做恢复。
    另外Oracle还使用数据块的SCN来维护查询的一致性和多版本。





    Checkpoint是一个数据库事件,用来同步所有的datafile,controlfile和redo logfile。当发出ckpt时(回顾什么时候oracle会发出ckpt呢),ckpt会将检查点时刻的scn写入到控制文件和数据文件头部,同时会促使dbwr进程将data buffer中的所有的脏数据写入到数据文件中。而dbwr进程工作时又会促使lgwr写log buffer中的日志数据到redo logfile中。所以当发出检查点时CKPT,DBWR和LGWR同时工作,三种文件的scn完全一致,从而能保持完全同步。



    一次checkpoint包含以下步骤:
    1. 1把redo buffers的内容刷到redo log中。
    2. 2在redo log file中留下一个checkpoint记录。
    3. 3把database buffer cache的变更刷新到磁盘。
    4. 4在checkpoint完成后,更新数据文件头和控制文件。



    Checkpoint的具体工作包括:
    ? 触发DBWn向磁盘写入Dirty data。
    ? 把checkpoint信息更新到datafile header上。
    ? 把checkpoint信息更新到control file里。

    ? Checkpoint做的事情之一是触发DBWn把buffer cache中的Dirty cache磁盘。另外就是把最近的系统的SCN更新到datafile header和control file(每一个事务都有一个SCN),做第一件事的目的是为了减少由于系统突然宕机而需要的恢复时间,做第二件事实为了保证数据库的一致性。





    checkpoint的作用就是 :
    1.减少系统崩溃导致的恢复时间
    2.保证数据库的一致性

    确保定期向磁盘写入内存中发生修改的数据块,以便在系统或数据库失败时不会丢失数据
    ?缩短例程恢复所需的时间。只需处理最后一个检查点后面的重做日志条目以启动恢复操作
    ?确保提交的所有数据在关闭期间均已写入数据文件
    由 CKPT 写入的检查点信息包括检查点位置、系统更改号、重做日志中恢复操作的起始位置以及有关日志的信息等等。



    checkpoint触发:

    一、log switch

    二、data buffer cache达到指定块

    三、达到checkpoint指定时间

    具体如下:

    1.当发生日志组切换的时候,减少crash后的recovery时间。
      2.当符合 LOG_CHECKPOINT_TIMEOUT,LOG_CHECKPOINT_INTERVAL,fast_start_io_target,fast_start_mttr_target 参数设置的时候
        LOG_CHECKPOINT_TIMEOUT 默认1800秒
        LOG_CHECKPOINT_INTERVAL 默认 0
        fast_start_mttr_target 默认,如果被指定,会覆盖LOG_CHECKPOINT_INTERVAL
        fast_start_io_target,10g以后已经抛弃。
      3.当 ALTER SYSTEM SWITCH LOGFILE,ALTER SYSTEM CHECKPOINT
      4.当 alter tablespace XXX begin backup,end backup
      5.当 alter tablespace ,datafile offline ;
  • 相关阅读:
    Oracle 10g RAC下如何删除listener
    使用Jumpstart安装Solaris时,如何确定boot使用的网卡MAC地址
    强大的firebug
    outlook 办公技巧总结
    (转)谈谈防止重复点击提交
    cakephp中实现csv文件导出
    JAVA中获取路径
    web项目修改名称问题
    Extjs插入图片
    Oracle脚本笔记
  • 原文地址:https://www.cnblogs.com/liaomin416100569/p/9331422.html
Copyright © 2020-2023  润新知