zoukankan      html  css  js  c++  java
  • Oracle-检查点队列

    前述  

      数据库实例有buffercache,buffercache中有很多buffer

      buffercache里面单独有一块内存区域用来记录,有很多链是chain

      LRU链:least recent use最近最少使用,LRU上链的是干净块

      LRUW链:least recently used write,也叫做dirty list,是脏数据块链表

      LRU链是将干净和可用的块串起来,当从buffercache里面找到可用块时就找LRU链

      LRUW是将脏块链起来,将来DBWR要将脏块写到磁盘上时就访问LRUW这个链,我们之所以把块链起来,就是为了组织和管理这些块。

      总之,不同的链有不同的功能!!

    检查点队列链

      Oracle buffercache里面有一种链叫检查点队列链----checkpoint query链

      首先来讲他是一个链,链接的是buffer,链的是块

        检查点队列也连接脏块

        脏块链接在LRUW上,是通过块的使用频率(冷/热)来链接的,经常访问的在热端,不经常访问的在冷端,而在冷端的块会先将数据写入磁盘,之后就可以被重复使用。

        但是检查点队列连接脏块,是通过块第一次脏的时间点连接起来。

      注意:1.检查点队列里对应的块是脏块

            2.按照脏块第一次脏的时间点进行连接 

    检查点队列连接方式的意义

        RBA  RedoBlockAddress  日志块地址 对块进行修改后会产生日志,RBA就是日志块的地址

        块中有两个地址

        LRBA  块第一次被脏的日志地址

        HRBA  块最近一次脏的日志地址

        注意:检查点队列是按照LRBA将脏块连接在一起

      最早脏的块对应的日志以下存放的是除最早块外其他脏块对应的日志

      日志按照时间的顺序记录着块的修改

      CKPT进程----检查点进程有两种工作的方式

            1.完全检查点:当完全检查点发生后,CKPT进程会触发DBWR,将所有的脏块写到磁盘上;

            2.增量检查点:当增量的检查点发生后,CKPT进程会将检查点队列的第一个脏块的对应的LRBA日志地址记录到控制文件中。

        什么时候发生完全检查点?

            ------数据库正常运行时,只有在正常关闭数据库时才会发生完全检查点

        什么时候发生增量检查点?

            -------数据库在正常运行时是几乎不会发生完全检查点,但会发生增量检查点,Oracle每个3秒钟发生增量检查点。

        那么在增量检查点发生时,CKPT进程将检查队列的最早脏的数据块对应的LRBA地址记录到控制文件中。

        记住:增量检查点是每隔3秒钟发生一次!!!

        增量检查点 主要做的两件事情:记录检查点队列链上最早脏的块的LRBA地址

    on disk rba----current中记录的最新的日志地址

      select CPDRT,CPLRBA_SEQ||'.'||CPLRBA_BNO||'.'||CPLRBA_BOF "Low RBA",CPODR_SEQ||'.'||CPODR_BNO||'.'||'.'CPODR_BOF "On disk  RBA",CPODS,CPODT,CPGBT from x$kcccp;

     alter system flush buffer_cache;---将所有的脏块写到磁盘上

      

           

        

        

         

  • 相关阅读:
    (转)一文讲清TCP/IP 协议
    Java框架之Spring Boot和Spring Cloud区别
    php大力力 [006节]初步接触认识phpMyAdmin
    php大力力 [005节] php大力力简单计算器001
    php大力力 [004节]PHP常量MAMP环境下加载网页
    php大力力 [003节]php在百度文库的几个基础教程mac环境下文本编辑工具
    php大力力 [002节]mac php环境安装,mamp安装 ,phpMyAdmin启动
    php大力力 [001节]2015-08-21.php在百度文库的几个基础教程新手上路日记 大力力php 大力同学 2015-08-21 15:28
    C# DataSet与DataTable的区别和用法 ---转载
    【SqlServer】利用sql语句附加,分离数据库-----转载
  • 原文地址:https://www.cnblogs.com/KAJIA1/p/12097749.html
Copyright © 2011-2022 走看看