下载此文档

log buffer及日志管理深入分析及性能调整.docx


文档分类:IT计算机 | 页数:约13页 举报非法文档有奖
1/13
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/13 下载此文档
文档列表 文档介绍
log buffer及日志管理深入分析及性能调整
本文首先详细介绍了 oracle 中 log buffer 的概念以及所包含的内存结构。深入介绍了 oracle 对于 log buffer 的管理机制,并全面介绍了有关log buffe区只是日志信息临时存放的区域,这块区域是有限的,而且其中的每个块都是能够循环使用的。 这也就说明,日志缓冲区中的内容必须要写入磁盘上的文件里,才能永久保留下来,才能在数据库崩溃时 能够用来进行恢复。这个文件就叫做联机日志文件。在每个日志缓冲区中的日志块被重用之前,其内容必 然已经被写入了磁盘上的联机日志文件中。
联机日志文件就是日志缓冲区的完全拷贝,组成日志文件的每个日志块的内容都来自于日志缓冲区的日 志块。每个日志缓冲区中的日志块都对应到日志文件中的一个日志块。日志缓冲区中的日志块按照发生的 先后顺序,放入联机日志文件。由于日志文件在故障恢复中的重要性,建议至少使用两个日志文件组成一 个日志文件组。同一个日志文件组中的日志文件内容一摸一样,因为日志缓冲区中的日志块同时会写入日 志文件组中的每个日志文件中。每个数据库都必须至少拥有两个日志文件组。这是由于只要数据库一天不 停止运行,就会不断产生日志信息,就会不断写入联机日志文件,联机日志文件总会有写满的时候。我们 不可能让联机日志文件无限大,也不可能放无限多的联机日志文件,所以联机日志文件必须是循环使用的, 在若干个日志文件中轮流的进行写入。一个日志文件写满以后转换到另外一个日志文件继续写的过程叫做 日志切换(log switch)。
当一个联机日志文件写满时,可以选择将其归档为脱机日志文件,通常叫做归档日志文件。归档也就是拷 贝,归档的过程也就是将写满的联机日志文件拷贝到预先指定的目录的过程。只有当一个联机日志文件完 成归档以后,该联机日志文件才能够被再次循环使用。强烈建议在生产库中选择这种归档方式,只有在测 试环境中可以不选择这种归档方式。
可以说,日志缓冲区和日志文件存在的唯一目的就是为了保证被修改的数据不会被丢失。反过来说,也就 是为了能够在数据库崩溃的时候,可以用来将数据库恢复到崩溃的那个时间点上。这也就是说,只有将被 修改的数据块的日志信息写入了联机日志文件以后,该被修改的数据块才可以说是安全的。如果日志信息 在没有被写入日志文件时发生实例崩溃,这时对数据的修改仍将丢失。由此我们可以看出,将日志缓冲区 中的日志信息写入日志文件是一个多么重要的过程,这个过程是由一个名为 LGWR 的后台进程完成的。 LGWR 承担了维护系统数据完整性的任务,它保证了数据在任何情况下都不会丢失。
触发LGWR进程将日志缓冲区中的日志信息写入联机日志文件条件包括以下几种:
前台进程触发,包括两种情况。最显而易见的一种情况就是用户发出commit或rollback语句进行提交 时,需要触发LGWR将内存里的日志信息写入联机日志文件,因为提交的数据必须被保护而不被丢失;另 外一种情况就是在日志缓冲区中找不到足够的内存来放日志信息时,也会触发LGWR进程将一些日志信息 写入联机日志文件以后,从而释放一些空间出来。
2) 每隔三秒钟, LGWR 启动一次。
3) 在DBWR启动时,如果发现脏数据块所对应的重做条目还没有写入联机日志文件,则DBWR触发LGWR 进程并等待LRWR写完以后才会继续。
4) 日志信息的数量达到整个日志缓冲区的1/3时,触发LGWR。
5) 日志信息的数量达到1MB时,触发LGWR。
6) 发生日志切换时触发 LGWR。
log buffer内存结构
我们已经知道,日志缓冲区用来存放事务对数据块的改变的日志信息。那么这里的日志信息到底包含哪 些内容,是由哪些结构组成的呢?
oracle记录数据库变化(也就是记录日志信息)的最小单位是改动向量(change vector)。改动向量用来描 述对数据库中任何单个数据块所做的一次改动。改动向量的内容包括:被改动的数据块的版本号、事务操 作代码、被改动的数据块的地址等。这里的版本号非常重要,它能够帮助数据块始终能够体现当前最新的 状态。oracle在建立改动向量时,会从数据块中拷贝其版本号。而当恢复期间,oracle读取改动向量并将改 动应用于相应的数据块以后,被恢复的数据块的版本号加1。这里的数据块可以属于表、也可以数据索引、 也可以属于回滚段。但是对于临时表空间里的临时段,不会生成改动向量。
当多个改动向量按照先后顺序组合在一起,从而完成对数据库的一次改动时,oracle称这组改动向量为重 做记录(redo record)。重做记录用来描述对数据库的一个原子改动。所谓原子改动,就是说,当应用改动 中的改动向量时,要么全部成功,要么全部失败,不存在部分成功

log buffer及日志管理深入分析及性能调整 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数13
  • 收藏数0 收藏
  • 顶次数0
  • 上传人jiyudian11
  • 文件大小70 KB
  • 时间2022-06-08
最近更新