免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 791 | 回复: 0
打印 上一主题 下一主题

ORACLE 后台进程之------LGWR [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-21 08:44 |只看该作者 |倒序浏览

        LGWR是一个非常重要的后台进程,主要负责将重做日志缓冲区的数据写入重做日志文件,LGWR是一个必须和前台用户进程通信的进程。当数据被修改的时候,系统会产生一个重做日志并记录在重做日志缓冲区内。这个Redo记录的条目大致可以认为是:

事务标示Transaction identifier

列信息Column address(File Block Row Column)

列的值Value of the column that changed

 

        而日志缓冲区是一个循环缓冲区。在LGWR将日志缓冲区的日志项写入日志文件后,服务器进程可将新的日志项写入到该日志缓冲区。LGWR 通常写得很快,可确保日志缓冲区总有空间可写入新的日志项。

LGWR工作的主要条件如下:

l           用户提交

l           有1/3 重做日志缓冲区未被写入磁盘

l           有大于1MB重做日志缓冲区未被写入磁盘

l           超时

l           DBWR需要写入数据的SCN号大于LGWR记录的SCN号,DBWR触发LGWR写入

 

 

       所以,有时候当需要更多的日志缓冲区时,LWGR在一个事务提交前就将日志项写出,而这些日志项仅在事务提交后才永久化。 Oracle使用快速提交机制,当用户发出COMMIT语句时,一个COMMIT记录立即放入联机日志文件,但对应的数据缓冲区的数据块的改变,也就是上面说的“脏”数据,一直要等到满足条件才被DBWn写入数据文件。这样做的主要目的就是可以快速提交事务并返回给用户提交信息,但是又能确保事务的完整性。

当事务提交时,它被赋给一个系统修改号(SCN),同事务日志项一起记录在日志中。在Oracle 中,SCN是一个很重要的概念,贯穿整个Oracle体系结构。由于SCN也记录在日志中,所以,系统故障需要系统恢复的时候,就可以很容易地根据SCN来恢复。

如下图所示,Log Buffer默认大致可以分为三个部分,当写满其中一个部分,或者是遇到提交的时候,都会导致LGWR写数据。另外,LGWR也会有3s的超时限制,超过这个时间还没有写日志将会强制写,或者是大于1MB的限制也会强制写。因此基于以上的限制,在频繁提交的OLTP系统中,根本不需要有太大的Log buffer。

  LGWR写进程

http://ajava.org/readbook/db/gjorazj/12666.html

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP