chain即链。

oracle中链有很多种,LRU、LRUW、checkpoint queue等,都是干什么的呢???

LRU将可用块(干净的块)串起来、LRUW将脏块串起来,指导DBWR进程率先将冷端的块写入磁盘,(buffer cache中的原则是不常访问的块“冲刷”掉,常访问的尽可能保存)也就是说将冷端先变成干净的块,然后串到LRU链上。

但是checkpoint queue作用是什么呢???checkpoint queue主要作用是确定实例崩溃后恢复的起点。数据库掉电、服务器死机均会造成实力崩溃,那么崩溃后会丢数据么,什么样的脏块保存的住,什么样的保存不住呢?答:当实力崩溃恢复后,提交过后的数据会保存住,未提交的事物会回滚。在8i以前,oracle是没有检查点队列,实例恢复完全是靠redo log日志“从头到位”的恢复,这样效率很差,恢复的很慢,当出现checkpoint queue之后确定了恢复的“起点”,那为什么只说“起点”而没有“终点”呢?这里要引出on disk rba,它是redo log日志current状态的最后一条日志也就是在redo log中当前的最近写入的日志,这个就是恢复的终点,所以说终点好找,起点不易啊!

      checkpoint queue确定的是恢复的起点,那它是如何确定的呢?其实checkpoint queue链的块也是脏块,与LRUW链不同的是,它上面链的块是按第一次脏的时间的前后顺序链起来的,而不是按访问的频率。当我们修改数据库中的数据时,修改块会产生日志块的地址,称为RBA(redo buffer address)、LRBA(low redo buffer address)、HRBA。对于脏块,有这三个地址。LRBA是指buffer第一次修改的RBA,就算以后再更改多少次,只要还没有被DBWR进程写入到磁盘中,它的LRBA是不会变的,而HRBA则是最后一次修改的RBA。所以也可以这样说,检查点队列是按LRBA地址链起来的,这样oracle就把最早修改时候的块的信息记录到redo log中了。所以说checkpoint queue链最前部的块就是目前buffer cache中的最早的脏块,这也就是恢复的起点了!CKPT进程有完全检查点和增量检查点,增量检查点会将检查点队列第一个块(最早脏的块)所对应的日志地址(LRBA)记录到控制文件中,当实例恢复时,就会从控制文件中知道恢复的起点了,增量检查点还有一个作用,就是如果发现checkpoint queue过长(也就说明脏块很多),且此时的I/O不是很忙的情况下,这时会触发DBWR进程写脏块,DBWR会优先写checkpoint queue前部分的脏块。但CKPT进程的增量检查点的主要功能还是第一个(三秒一次)。

      当事物提交过后,日志会将log buffer cache中的日志信息通过LGWR进程写入到redo log中,这样就被记录到磁盘了,故实力崩溃,写入到磁盘的信息是不会丢失的,所以当实例恢复时,这些信息就会被恢复,也就是说,提交过后的脏数据,在实例恢复时会被重现在buffer cache中,而未被提交的脏数据是否还会一同被恢复呢,答案是会的,因为它会将从LRBA至on disk rba全部恢复,不论是否提交,但是oracle会自动将未提交的数据回滚。

总结:1.提交的事物,脏块一定会被日志恢复,未提交的事物,也会被日志恢复,但是会被undo表空间回滚。

2.DBWR有两种写方式:写冷端、按检查点队列写较早的脏块。

3.实例恢复,由控制文件中记录的LRBA为恢复的起点,on disk rba为恢复的终点。

oracle实例恢复之检查点队列的更多相关文章

  1. oracle检查点队列与增量检查点【转载】

    oracle检查点队列与增量检查点 今天是2013-09-04,这几天一直心里安顿不下来,今天还好了,可以自己安静的学习一下oracle,在此记录一下学习笔记.这篇文章我不知道在那转载的,一直都留在我 ...

  2. oracle检查点队列(checkpoint queue)

    buffer cache CBC链 按地址链 LRU  干净buffer LRUW  脏buffer  按照冷热 checkpoint queue:链buffer,①链脏块②按buffer第一次脏的时 ...

  3. oracle实例名,数据库名,服务名等概念差别与联系

    数据库名.实例名.数据库域名.全局数据库名.服务名 这是几个令非常多刚開始学习的人easy混淆的概念.相信非常多刚開始学习的人都与我一样被标题上这些个概念搞得一头雾水.我们如今就来把它们弄个明确. 一 ...

  4. OCP知识点讲解 之 检查点队列与增量检查点

    原创 http://blog.chinaunix.net/uid-26762723-id-3271558.html 检查点的主要目的是以对数据库的日常操作影响最小的方式刷新脏块.脏块不断的产生,如何将 ...

  5. Oracle 实例恢复

    -======================= -- Oracle 实例恢复 --======================= 一.Oracle实例失败 Oracle实例失败多为实例非一致性关闭所 ...

  6. Oracle实例名,服务名等概念区别与联系

    数据库名.实例名.数据库域名.全局数据库名.服务名 , 这是几个令很多初学者容易混淆的概念.相信很多初学者都与我一样被标题上这些个概念搞得一头雾水.我们现在就来把它们弄个明白. 一.数据库名 什么是数 ...

  7. oracle之二检查点

    检查点(checkpoint) 8.1 什么是checkpointcheckpoint是数据库的一个内部事件,检查点激活时会触发数据库写进程(DBWR),将数据缓冲区里的脏数据块写到数据文件中. 8. ...

  8. Oracle实例和Oracle数据库(Oracle体系结构)

    --========================================== --Oracle实例和Oracle数据库(Oracle体系结构) --==================== ...

  9. 【转载】Oracle实例和Oracle数据库(Oracle体系结构)

    免责声明:     本文转自网络文章,转载此文章仅为个人收藏,分享知识,如有侵权,请联系博主进行删除.     原文作者:Leshami      原文地址:http://blog.csdn.net/ ...

随机推荐

  1. android studio的Beta, Canary, Dev, Stable四种Channel版本介绍、分析与选择

    一.概述 在Android Studio下载官网上,有如下介绍: ` Android Studio's built-in update mechanism can be set to receive ...

  2. harris角点检测的学习

    Harris通过运用微分运算和自相关矩阵改进了Moravec角点检测算法.用微分算子重新定义灰度强度变化的公式,其灰度强度变化表示为: 式中的wu,v为高斯窗口在(u,v)处的系数.X,Y它们是像素点 ...

  3. LruCache为GridView异步加载大量网络图片

    MainActivity如下: import android.os.Bundle; import android.widget.GridView; import android.app.Activit ...

  4. alternatives命令用法

    alternatives是Linux下的一个功能强大的命令.只能在根权限下执行.如系统中有几个命令功能十分类似,却又不能随意删除,那么可以用替代指定一个全局的设置.alternatives常用于同一个 ...

  5. jQuery简单易用的网页内容打印插件

    简要教程 jQuery.print是一款简单易容且功能强大的网页内容打印jQuery插件.该网页打印插件可以打印指定区域的网页元素,可以指定跳过不打印某些元素,还可以打印整个页面内容.并且提供了丰富的 ...

  6. localstorage 的属性改变问题

    localstorage 得到的是对象,我们打算改对象的某个属性的值,方法是 通过临时变量对象得到,改变临时变量,然后把临时变量给localstorage的方法 var localS  = windo ...

  7. DataStructure 排序 源码实现

    本篇博客实现了 1.冒泡排序 2.冒泡排序的一种优化(当某次冒泡没有进行交换时,退出循环) 3.选择排序 4.归并排序 5.快速排序. 主要是源码的实现,并将自己在敲的过程中所遇到的一些问题记录下来. ...

  8. Android开发使用TotalControl调试遇到的问题(备注)

    背景:Android开发,使用TotalControl控制手机进行调试. 过程:Eclipse调试一直正常,某天下午突然提示:无法启动ADB.exe,请确认是否在对应的路径下. 怀疑是自己程序写的有问 ...

  9. Spring mvc example

    Spring mvc example 1.下载spring源包 spring地址:http://www.springsource.org/download 我下的是spring-framework-3 ...

  10. 内置函数dict

    本函数是从可迭代对象来创建新字典.比如一个元组组成的列表,或者一个字典对象. 例子: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #dict() #以键对方式构造字典 ...