NO8-内存结构精讲(三)-检查点-网络资料

oracle的增量检查点一、为什么要有检查点?被修改过的块,在oracle屮都被统称为脏块.所有的脏块被一个链表串起来,称做检查点 队列.在buffercache中,每一,个块都有一个buffer h

的增量检查点 oracle 一、为什么要有检查点? 被修改过的块,在屮都被统称为脏块.所有的脏块被一个链表串起来,称做检查点 队列. oracle 在 buffer 中,每一,个块都有一个简称在中有一个项,此项目中记 录了 cachebuffer headerBH,BHckptq 指向检查点队 列上一个块和下一个块的指针.如果某一个块不在检查点队列中,他的项为空.通过 项 ckptqckptq 将 oracle 所有的脏块串成了一个双向链表.这个双向链表就是检查点队列了. 1, 只有脏块才会在检查点队列屮,非脏块的为空. ckptq 2, 当块首次被更改吋,块会立即被加进检查点队列.如果检查点队列屮的脏块再次被修改,并 不会改 变其在 检查点队列中的位置. 3, 检杳点队列屮脏块的排列顺序:根据第点,所有脏块按照首次被更改的时间的顺序排列. 2 更准确点说:按 照块的排列. lrba **什么是 rba?lrba?hrba? 就是重做块地址,比如说,用户发出了一条命令,更新了块块现在变成了脏 rbaupdateA,A 块,会为他 oracle 生成一条重做记录•这条重做记录在重做日志文件中的位置就是 rba(redo block address). 如:块依然还是脏块,此时.用户又发出一条更新块的命令,这又会生成一条重做记录.第 •条 AA 更新命令对 应的重做记录的被称为块的第二条更新命令对应的被称为 rbaA1 rba(low rba),rba,hrba(high rba). 其实,按照来排列,就是按照块首次被修改的顺序来排列. lrba 下面说说写脏块的方式,有了检查点队列后,脏块按照首次变脏的时间顺序排 DBWRZ 列,每到一定的 DBWR 时机,就会被触发,沿着检杳点队列的顺序刷新脏块,具体在屮有-几个参数用来确定 检杳 oracle 点队列的长 度.另有一个进程,会监控着检査点队列的长度,当检查点队列的长度达到-定限 CKPT 制时,会通知写脏块.会根据参数的设置和的速度以及繁忙程度,计算出 CKPTDBWR CKPTI/O 来•个标 会沿 着检查点队列,将所有前的脏块刷新到磁 Target rba(Urba), DBWR Target rba Z 盘.当通知完 CKPTDBWR Target rba 后,的任务就 CKPT

腾讯文库NO8-内存结构精讲(三)-检查点-网络资料