详细论述增量检查点
2012-12-11 20:44
155 查看
详细论述增量检查点
被修改过的块,在oracle中都被统称为脏块.所有的脏块被一个链表串起来,称做检查点队列.在buffer cache中,每一个块都有一个buffer header 简称BH,在BH中有一个ckptq项,此项目中记录了指向检查点队 列上一个块和下一个块的指针.如果某一个块不在检查点队列中,他的ckptq项为空.通过ckptq项oracle将 所有的脏块串成了一个双向链表.这个双向链表就是检查点队列了. 1,只有脏块才会在检查点队列中,非脏块的ckptq为空. 2,当块首次被更改时,块会立即被加进检查点队列.如果检查点队列中的脏块再次被修改,并不会改变其在 检查点队列中的位置. 3,检查点队列中脏块的排列顺序:根据第2点,所有脏块按照首次被更改的时间的顺序排列.更准确点说:按 照块的lrba排列. **什么是rba?lrba?hrba? rba就是重做块地址,比如说,用户发出了一条update命令,更新了块A,块A现在变成了脏块,oracle会为他 生成一条重做记录.这条重做记录在重做日志文件中的位置就是rba(redo block address).过了一会儿,假 如:块A依然还是脏块,此时.用户又发出一条更新块A的命令,这又会生成一条重做记录.第一条更新命令对 应的重做记录的rba被称为块A的lrba(low rba),第二条更新命令对应的rba,被称为hrba(high rba). 其实,按照lrba来排列,就是按照块首次被修改的顺序来排列. 下面说说DBWR写脏块的方式,有了检查点队列之后,脏块按照首次变脏的时间顺序排列,DBWR每到一定的 时机,就会被触发,沿着检查点队列的顺序刷新脏块,具体在oracle中有几个参数用来确定检查点队列的长 度.另有一个CKPT进程,会监控着检查点队列的长度,当检查点队列的长度达到一定限制时,CKPT会通知DBWR 写脏块.CKPT会根据参数的设置和I/O的速度以及繁忙程度,计算出来一个Target rba(目标rba),DBWR会沿 着检查点队列,将所有Target rba之前的脏块刷新到磁盘.当CKPT通知完DBWR Target rba后,CKPT的任务就 结束了.他并不会等待DBWR写完所有的Target rba之前的脏块.通知DBWR写脏块,这是CKPT的任务之一,CKPT 另有一个任务,就是每3秒,检测一次DBWR的写进度.检查点队列最前面的块被称为检查点位置.DBWR是沿着 检查点队列写脏块的,CKPT每3秒钟查看一下DBWR沿检查点队列写到了哪里,并且将这个位置设置为检查点 位置.也就是说检查点位置之前的块,都是已被DBWR刷新到磁盘上的块.这个3秒一次检查DBWR进度的工作, 也是CKPT的一个重要的任务.CKPT每3秒一次将检查点位置记录进控制文件,当然同时被记录进控制文件的 还有'心跳'等其他信息.CKPT每3秒一次的工作和CKPT定期触发DBWR,这两项操作合一起被称为--增量检查 点. |
相关文章推荐
- oracle技术之详细论述oracle,增量检查点篇(三)
- oracle技术之详细论述oracle增量检查点篇(四)
- oracle技术之详细论述oracle增量检查点篇(五)
- 详细论述增量检查点
- oracle技术之详细论述oracle增量检查点篇(二)
- innobackupex备份恢复详解及详细增量备份及恢复脚本
- BW之数据源 增量管理DELTA (比较详细的)
- 关于DB2 MQT 增量更新,出错代码详细说明
- 关于HSL和HSV颜色空间的详细论述
- 详细解说——webpack增量打包多页应用
- 增量检查点与完全检查点的区别?
- 贝壳一键还原2.0完成,支持增量备份和还原,这里详细说明使用过程
- 关于HSL和HSV颜色空间的详细论述
- 基于日志却采用三种方法来区别增量检查点和完全检查点
- 关于取消左转可缓解交通拥堵问题的详细论述
- MySQL 利用xtrabackup进行增量备份详细过程汇总
- MySQL 利用xtrabackup进行增量备份详细过程汇总
- ORACLE 11G通过SCN做增量备份修复standby库详细过程
- React Native 详细实现热部署、增量差异化热更新
- Android增量升级的方法和原理详细介绍