ORACLE内核管理-检查点列队与实例恢复

本文深入解析Oracle数据库的实例恢复机制,重点讲解检查点列队、脏块与RBA的关系,以及如何通过RBA进行数据库恢复。文章还详细介绍了RBA的分类及其在恢复过程中的作用。

1 检查点列队与实例恢复

  • 块被修改时会产生redo记录。
  • 块在由不脏变脏时,会被链接到检查点列队。
  • 检查点列队块的排序基本和redo记录保持一致。
  • DBWR每3s检查一次检查点列队,也就是脏块数,超过一定范围,会触发写脏块。
  • CKPT每3s会将检查点列队对应的LRBA记录到控制文件中。
  • 如果发生数据库实例崩溃,宕机情况,恢复起点就是检查点列队对应的LRBA位置
  • oracle找到此LRBA,定位到redo的某个位置,开始依次进行恢复。
  • 上述过程为CRASH recover过程前滚过程,还需要借助undo进行回滚。(如果undo损坏,切换新的undo,将会产生大量的CR读取,切换完成后再进行正常重启数据库

 

什么是rba ?

脏数据块 改对应的redo记录条目的位置                                  

rba包括哪些内容?

  • 条目所在redo文件的sequence号
  • 条目所在日志文件的块号
  • 条目距离日志文件开始位置的偏移量

rba的分类

  • low  rba :在buffer cache中的数据块第一次数据改变所对应的RAB。 脏数据块在检查点 队列里面按照low rba排列。
  • high rba :在buffer cache中的数据块最近一次数据改变时所对应的RAB。
  • checkpoint rba:在checkpint queue中(每次checkpoint queue被clean以后)第一个脏数据块第一次被修改对应的RAB,这个RBA之前的脏数据已经被全部写入磁盘。
  • on-disk rba:是 lgwr 写日志文件的最末位置的地址。

数据库 实例恢复 的范围

checkpoint RBA 到on-disk RBA 的 充作记录。8i所引入的增量检查点每隔三秒钟或发生日志切换时启动。它启动时只做一件事情:找出当前检查点队列上的第一个buffer header,并将该buffer header中所记录的LRBA(这个LRBA也就是checkpoint position了)记录到控制文件中去(checkpoint RBA )。而on-disk RBA 是 lgwr 写日志文件的最末位置的地址。

与rba相关的数据字典

X$BH 用于查看脏块的LRBA和HRBA(There is also a recovery RBA which is used to record the progress of partial block recovery by PMON.) 。 X$TARGETRBA 查看增量checkpoint RBA,target RBA和on-disk RBA。 X$KCCCP 这里面也有增量checkpoint RBA,target RBA的信息。 X$KCCRT 完全checkpoint(full thread checkpoint)RBA信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值