• oracle检查点队列(checkpoint queue)


    buffer cache

    CBC链 按地址链

    LRU  干净buffer

    LRUW  脏buffer  按照冷热

    checkpoint queue:链buffer,①链脏块②按buffer第一次脏的时间链起来

    RBA :Redo Block Address

    LRBA:块第一次脏的地址

    HRBA:块最近一次脏的地址

    检查点队列按照buffer的LRBA地址链起来

    ckpt进程

    1,完全检查点  触发DBWR把所有脏块写会数据文件  

               关闭数据库的时候会发生

    2,增量检查点   将检查点队列的第一个块所对应的日志地址(LRBA)记录到控制文件

                每隔3秒钟

    on disk rba  current日志里面的最后一条日志的地址

    脏块所对应的事务已经提交 

    脏块所对应的事务还没提交

    脏块所对应的日志还在log buffer,说明脏块对应的事务还没有提交,认为对这个脏块的修改没发生过

    终点:current日志的最后一条日志(on disk rba)

    起点:在控制文件中记录的LRBA地址(CKPT会写进去)作为起点

    实例恢复的时候,跑日志,前滚,已提交事务的脏块肯定会被构造出来,但未提交事务的脏块也会被构造出来,再通过undo,回滚。

    控制文件中的scn:

       系统scn

       文件scn

       结束scn

    数据文件中的scn:

       数据文件头部scn

     

  • 相关阅读:
    开源ITIL管理软件iTop 2.5-2.6安装
    并发服务器
    套接字通信
    libevent
    gdb调试
    值得收藏的技术社区
    关于博客园随笔编辑页面内容不刷新(空白)的问题解决
    嵌入式Web框架
    内存地址的传递问题
    linux文件缓冲区
  • 原文地址:https://www.cnblogs.com/guilingyang/p/5917665.html
Copyright © 2020-2023  润新知