检查点队列与日志的对应情况,实例恢复

原创 2013年12月05日 23:49:37

首先想一个问题:检查点队列到底有什么用?

检查点队列按照块第一次被脏的时间点串起来

其实就是为了提高实例崩溃恢复的速度的~!有了检查点队列我们就能确定控制文件中记录的LRBA也可叫检查点位置,增量检查点,ckpt每个3秒写入控制文件),这个LRBA就是我们实例恢复的起点~!

增量检查点就是为了更新控制文件的LRBA.

在8i之前,没有检查点队列,在实例崩溃的时候,oracle会把整个的current redo log跑一遍,这样太费时间了,所以引入了检查点队列~!



上图:




查看检查点队列(checkpoint queue)上的的脏块树,和控制文件中记录的LRBA、on disk rba

select CPDRT,CPLRBA_SEQ||'.'||CPLRBA_BNO||'.'||CPLRBA_BOF "Low  
RBA",CPODR_SEQ||'.'||CPODR_BNO||'.'||CPODR_BOF "On disk RBA",CPODS,CPODT,CPHBT from x$kcccp;
CPDRT列是检查点队列中的脏块数目. 

CPODS列是on disk rba的scn 
CPODT列是on disk rba的时间戳 
CPHBT列是心跳





实例恢复(在内存中恢复那些提交了,但没来得及写的脏块): 

起点:LRBA    (在current redolog上,在控制文件中记录,ckpt负责更新)         --检查点位置

终点:on disk RBA  (current redolog的最后)

在这一段日志中(LRBA---on disk RBA)中,有我检查点队列上所有提交了的脏块,而检查点队列串着buffer cache中所有脏块,所以这段日志就能构造出内存中所有提交了的脏块


这就是实例恢复需要跑的日志,通过跑这段日志,就能构造出崩溃时内存中所有提交了的脏块,当然也会构造出一些未提交的脏块,不过没关系,oracle会将未提交的脏块回滚!这样就能保证我已经commit的事物不会丢失


实例恢复两个阶段:①前滚(跑这段日志构造脏块)、②后滚(回滚没有commit的脏块)




有空可以看一下这个帖子,增量检查点和完全检查点:http://www.itpub.net/thread-330591-1-1.html


Oracle 实例恢复

一、Oracle实例失败     Oracle实例失败多为实例非一致性关闭所致,通常称为崩溃(crash)。实例失败的结果等同于shutdown abort。     实例失败的原因         ...
  • gz153016
  • gz153016
  • 2015年10月26日 09:25
  • 860

oracle学习笔记 检查点队列(checkpoint queue)

oracle学习笔记 检查点队列(checkpoint queue)这节课讲一下oracle里面的一个难点也是一个重点叫检查点队列, 会讲到oracle里面内部的比较机理性的东西,对我们以后的学习非...
  • xinzhan0
  • xinzhan0
  • 2017年05月05日 16:28
  • 424

用于设置检查点并恢复程序状态的方法

申请号:CN102736948 B 申请日期:2011年12月19日 申请人:微软公司【摘要】 本发明涉及用于设置检查点并恢复程序状态的方法。此处描述了允许从检查点恢复被中断的程序执行而无需来自...
  • sentimentalBunny
  • sentimentalBunny
  • 2016年01月23日 12:16
  • 1121

SQL SERVER检查点的几个误区

有关CheckPoint的概念对大多数SQL Server开发或DBA人员都不陌生。但是包括我自己在内,大家对于CheckPoint都或多或少存在某些误区,最近和高文佳同学(感谢高同学的探讨)关于该处...
  • YABIGNSHI
  • YABIGNSHI
  • 2014年04月22日 16:16
  • 983

理解数据库中的undo日志、redo日志、检查点

数据库存放数据的文件,本文称其为data file。 数据库的内容在内存里是有缓存的,这里命名为db buffer。某次操作,我们取了数据库某表格中的数据,这个数据会在内存中缓存一些时间。对这个数据...
  • kobejayandy
  • kobejayandy
  • 2016年03月14日 13:34
  • 6381

rabbitmq启用日志功能记录消息队列收发情况

原文:http://blog.csdn.net/u013256816/article/details/76039201 1、启用日志插件命令 rabbitmq-plugins enable rab...
  • fuck487
  • fuck487
  • 2017年11月30日 16:00
  • 318

Oracle 实例崩溃恢复原理剖析 -- 检查点队列的作用与意义

这篇文章是参考甲骨论老相老师的教学视频 http://v.youku.com/v_show/id_XNDAxMzI3NzI4.html 所做的学习笔记 检查点队列的内容已经在上一...
  • nvd11
  • nvd11
  • 2013年04月05日 19:13
  • 1109

Oracle 实例崩溃恢复原理剖析 -- 检查点队列的作用与意义

这篇文章是参考甲骨论老相老师的教学视频 http://v.youku.com/v_show/id_XNDAxMzI3NzI4.html 所做的学习笔记 检查点队列的内容已经在上一...
  • xuanxuan_good
  • xuanxuan_good
  • 2017年01月18日 17:34
  • 314

Spark的RDD检查点实现分析

Spark的RDD执行完成之后会保存检查点,便于当整个作业运行失败重新运行时候,从检查点恢复之前已经运行成功的RDD结果,这样就会大大减少重新计算的成本,提高任务恢复效率和执行效率,节省Spark各个...
  • beliefer
  • beliefer
  • 2016年05月26日 10:30
  • 14849

【数据库】基于日志系统的恢复机制

对于需要持久化数据的软件或者系统,必须要解决的问题是如何处理意外中断导致的数据丢失问题。比如一个交易系统,用户正在购买商品,突然断电了,那么如何恢复用户的账户信息?该不该扣款?商家的商品到底有没有卖出...
  • u010900754
  • u010900754
  • 2017年06月01日 16:58
  • 310
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:检查点队列与日志的对应情况,实例恢复
举报原因:
原因补充:

(最多只允许输入30个字)