脏缓存区用一个新队列链接,称为检查点队列。对缓存区的每一个改动,都有一个与其相关的重做值。检查点队列包含脏的日志缓存区,这些缓存区按照它们在日志文件中的位置排序,即在检查点队列中,缓存区按照它们的LRBA进行排序。需要注算法特点:
1)DBWR能确切的知道为满足检查点请求需要写那些缓存区;
3)缓存区标识:当数据在buffer cache中做了修改之后会自动被为脏缓冲区,加入到Checkpoint Queue的脏缓冲区队列。
4)脏缓存区刷新:当检查点发生时,会到CKPTQ中的脏缓冲区队列找到到目前为止最大的LRBA,并通知DBWR进程将所有脏缓存区写入磁盘,完成之后设置一标志,标识已完成脏缓存区至磁盘的写入操作,以便刷新脏缓冲队列(此时DML可以继续进行)。系统进程LGWR与CKPT进程将继续进行检查,直至DBWR进程结束为止;
检查点是一个数据库事件,它把修改数据从高速缓存写入磁盘,并更新控制文件和数据文件,总结起来如下: 5)更新控制文件与数据文件。
由于检查点队列上的缓存区按照低重做值进行排序,而DBWR也按照低重做值顺序写出检查点缓存区,故可能有多个检查点请求处于活动状态,当DBWR写出缓存区时,检查位于检查点队列前端的缓存区重做值与检查点重做值的一致性,如果重做值小于检查点队列前缓存区的低重做值的所有检查点请求,即可表示处理完成。当存在未完成的活动检查点请求时,DBWR继续写出检查点缓存区。
ORACLE系统进程DBWR在响应检查点请求时,按照这个队列的LRBA的升序写出缓存区。每个检查点请求指定一个重做值,一旦DBWR写出的缓存区重做值等于或大雨检查点的重做值,检查点处理即完成,并将记录到控制文件与数据文件。
1)局部检查点:单个实例执行数据库所有数据文件的一个检查点操作,属于此实例的全部脏缓存区写入数据文件。
在两种情况下,文件头中的检查点信息(获取当前检查点信息时)将不做更新:
2)获取当前检查点信息:获取检查点记录信息的结构,此结构包括当前检查点时间、活动线程、进行检查点处理的当前线程、日志文件中恢复截止点的地址信息;
触发命令:
2)检查SCN小于文件头中的检查点SCN的时候,这表明由检查点产生的改动已经写到磁盘上,在执行全局检查点的处理过程中,如果一个热备份快速检查点在更新文件头时,则可能发生此种情况。应该注意的是,ORACLE是在实际进行检查点处理的大量工作之前捕获检查SCN的,并且很有可能被一条象热备份命令
3)根据检查点重做值可以区别多个检查点请求,然后按照它们的顺序完成处理。
免责声明:本站发布的内容(图片、视频和文字)以原创、来自本网站内容采集于网络互联网转载等其它媒体和分享为主,内容观点不代表本网站立场,如侵犯了原作者的版权,请告知一经查实,将立刻删除涉嫌侵权内容,联系我们QQ:712375056,同时欢迎投稿传递力量。
Copyright © 2009-2022 56dr.com. All Rights Reserved. 特网科技 特网云 版权所有 特网科技 粤ICP备16109289号
域名注册服务机构:阿里云计算有限公司(万网) 域名服务机构:烟台帝思普网络科技有限公司(DNSPod) CDN服务:阿里云计算有限公司 百度云 中国互联网举报中心 增值电信业务经营许可证B2
建议您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流浏览器浏览本网站