- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
将内存数据块写入数据文件实在是一个相当复杂的过程,在这个过程中,首先要保证安全。所谓安全,就是在写的过
程中,一旦发生实例 ,要有一套完整的机制能够保证用户已经提交的数据 丢失;其次,在保证安全的基础
上,要尽可能地提高效率。众所周知,I/O 操作是最昂贵的操作,所以应该尽可能地将脏数据块收集到一定程度以后,
再批量写入磁盘中。
直观上最简单的解决方法就是,每当用户提交的时候就将所改变的内存数据块交给 DBWn,由其写入数据文件。这样
的话,一定能够保证提交的数据 丢失。但是这种方式效率最为低下,在高并发环境中,一定会引起 I/O 方面的争
用。Oracle 当然 采用这种没有伸缩性的方式。Oracle 引入了 CKPT 和 LGWR 这两个 进程,这两个进程与
DBWn 进程互相合作,提供了既安全又高效的写脏数据块的解决方法。
用户进程每次修改内存数据块时,都会在日志缓冲区(log buffer)中构造一个相应的重做条目(redo entry),该重做
条目描述了被修改的数据块在修改之前和修改之后的值。而 LGWR 进程则负责将这些重做条目写 机日志文件。只
要重做条目进入了联机日志文件,那么数据的安全就有保障了,否则这些数据都是有安全隐患的。LGWR 是一个必须
和前台用户进程通信的进程。LGWR 承担了维护系统数据完整性的任务,它保证了数据在任何情况下都 丢失。
假如 DBWR 在写脏数据块的过程中,突然发生实例 时,该怎么办 ?我们已经知道,用户提交时,Oracle 是不一定
会把提交的数据块写入数据文件的。那么实例 时,必然会有一些已经提交但是还没有被写入数据文件的内存数据
块丢失了。当实例再次启动时,Oracle 需要利用日志文件中 的重做条目在 buffer cache 中重新构造出被丢失的数
据块,从而完成前滚和回滚的工作,并将丢失的数据块找回来。于是这里就存在一个问题,就是 Oracle 在日志文件中
找重做条目时,到底应该找哪些重做条目?换句话说,应该在日志文件中从哪个起点开始往后应用重做条目?注意,
这里所指的日志文件可能不止一个日志文件。
因为需要预防随时可能的实例 现象,所以 Oracle 在数据库的正常运行过程中,会不断地 这个起点,以便在不
可预期的实例 中能够最有效地保护并恢复数据。同时,这个起点的选择非常有讲究。首先,这个起点不能太靠近
日志文件的头部,太靠近日志文件头部意味着要处理很多的重做条目,这样会导致实例再次启动时所进行恢复的时间
太长 ;其次,这个起点也不能太靠近日志文件的尾部,太靠近日志文件的尾部说明只有很少的脏数据块没有被写入数
据文件,也就是说前面已经有很多脏数据块被写入了数据文件,那也就意味着只有在 DBWn 进程很频繁地写数据文件
情况下,才能使得 buffer cache 中所残留的脏数据块的数量很少。但很明显,DBWn 写得越频繁,那么所占用写数据
文件的 I/O 就越严重,那么留给其他操作(比如 buffer cache 中不存在的数据块等)的 I/O 就越少。这显然也
是不合理的。
从这里也可以看出,这个起点实际上说明了,在日志文件中位于这个起点之前的重做条目所对应的在 buffer cache 中
的脏数据块已经被写入了数据文件,从而在实例 以后的恢复中不需要去考虑。而这个起点以后的重做条目所对应
的脏数据块实际还没有被写入数据文件,如果在实例 以后的恢复中,需要从这个起点开始往后,依次取出日志文
件中的重做条目进行恢复。考虑到目前的内存容量越来越 uffer cache 也越来越 uffer cache 中包含几百万个
内存数据块也是很正常的现象的前提下,如何才能最有效的来 这个起点呢?
为了能够确定这个最佳的起点,Oracle 引入了名为CKPT 的 进程,通常也叫作检查点进程(checkpoint process)。
这个进程与 DBWn 共同合作,从而确定这个起点。同时,这个起点也有一个专门的名字,叫做检查点位置(checkpoint
position,该检
您可能关注的文档
最近下载
- 智能交通产业园项目可行性研究报告.pptx VIP
- 【初中竞赛资料】2016年全国初中数学联赛通知.pdf VIP
- 产业园项目可行性研究报告.pptx VIP
- 成都高新区党工委管委会部门所属事业单位及法定机构公开选调(聘)优秀干部人才笔试模拟试题及答案解析.docx VIP
- 成都高新区党工委管委会部门所属事业单位及法定机构公开选调(聘)优秀干部人才笔试备考题库及答案解析.docx VIP
- 窗帘安装师傅劳务合同5篇.docx VIP
- 第三代半导体数字产业园项目可行性研究报告.pptx VIP
- 成都高新区党工委管委会部门所属事业单位及法定机构公开选调(聘)优秀干部人才笔试参考题库附答案解析.docx VIP
- 新疆专业技术人员管理平台业务操作指南.PDF VIP
- 生态修复项目阶段性成果的绩效评估体系构建.docx VIP
文档评论(0)