Oracle检查点队列–实例崩溃恢复原理剖析

检查点队列–实例崩溃恢复原理剖析

什么叫检查点队列?

检查点队列是将脏块连接起来,按照第一次脏的数据块依次往后串联起来,形成一个队列。

检查点的作用是什么?

检查点只是一个数据库事件,它存在的根本意义在于减少崩溃恢复时间,Oracle8i以前是没有检查点队列这个说法的,当数据库宕机或者异常关闭的时候(shutdown abort) 再次启动数据库会根据全部的redo log日志将已提交的数据进行恢复,消耗很长时间,检查点队列出现以后只需要找到第一个脏快所对应的redo log的地址和最后被脏的脏快对应的redo log地址进行恢复,缩短了恢复的时间。如下图:

先来认识几个名词:

RBA: redo block address日志的地址,日志块的地址。 如我们对一个数据库进行修改并且提交了将会在redo log里产生对应的日志。RBA正是记录被修改的数据块对应的日志地址。

扩展:对每个脏块来讲有LRBA和HRBA,LRBA数据块指的是最早被脏的日志地址 HRBA数据块最近被脏的日志地址也是对应当前数据块最后一次被修改的日志地址。假设最近一次是第五次被脏,它也对应着一个地址叫HRBA地址。

LRBA 记录着最早被脏的数据块地址,而日志是按照时间顺序记录着buffercache的变化历程,也就是在它后面被脏的数据库都会在它后面也就是检查点队列的后面所有的数据块,它们的脏所对应的日志,都在LRBA对应的日志地址的下面。

如图中的数据块(文件后6 Block500)被修改为B 因为他对应的时间是最早被修改的,所以它可以理解为LRBA,所以对应的redo

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值