暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

性能优化之等待事件log file parallel write解决方法

Oracle微学堂 2017-12-18
2198
class
log file parallel write

1.LGWR专属事件,将日志缓冲区中的重做信息写入到联机重做日志组的所有成员,LGWR在该事件上等待写入的完成。


2.写入时机:

>> 每隔3秒写入一次

>> 在提交或回滚时

>> 在满足_LOG_IO_SIZE阈值时

>> 在日志缓冲区有1MB的重做项时

>> 由DBWR提交时


3.用户会话提交事务时,LGWR会等待该事件的完成,用户会话则等待log file sync事件。


4.该事件的等待表示重做日志所处的磁盘设备缓慢或存在争用。

SELECT s.event, s.time_waited, s.average_wait
FROM v$system_event s
WHERE s.event IN ('log file parallel write', 'log file sync')

注:'log file parallel write'事件的平均等待时间大于10ms(1cs),这通常表示存在缓慢的IO吞吐量。


5.如果该事件的等待时间过长,除了改进IO吞吐量外,

也可以设法降低重做的数量。

>> 只要有可能就使用NOLOGGING选项。

>> CTAS操作也应该使用该选项。

也可以以较高的回滚段使用率为代价的较低提交频率,来缓解一些IO需求,使用以下SQL查出谁在频繁提交数据:

SELECT sid, VALUE
FROM v$sesstat s
WHERE s.statistic# =
 (SELECT statistic# FROM v$statname WHERE NAME = 'user commits')
ORDER BY VALUE

SELECT b.NAME, a.VALUE, round(SYSDATE - c.startup_time) day_old
FROM v$sysstat a, v$statname b, v$instance c
WHERE a.statistic# = b.statistic# AND b.NAME IN ('redo wastage', 'redo size')

注:由于LGWR不象DBWR那样能够有多个,所以尽可能将REDO放在IO快的磁盘结构上,不要放在象RAID5这样的磁盘上。


6.热备可能创建大量的重做项,从而增加log file parallel write等待事件,所以热备份应该在非高峰时间内运行,并且应该尽可能将表空间排除在热备份模式外。


7.注意不要同时使用过多的重做项堵塞LGWR。可以使用下需的查询来找到每次写入的平均重做日志块的数量,以及以字节为单位的LGWR IO平均大小:

SELECT round((a.VALUE b.VALUE) + 0.5, 0) AS avg_redo_blks_per_write,
 round((a.VALUE / b.VALUE) + 0.5, 0) * c.lebsz AS avg_io_size -- 字节为单位
FROM v$sysstat a, v$sysstat b, x$kccle c
WHERE c.lenum = 1
AND a.NAME = 'redo blocks written'
AND b.NAME = 'redo writes'

注:x$kccle.lebsz字段包含每个日志块的大小。


8.参数说明:

事件号:176

事件名:log file parallel write

参数一:写入的日志文件号

参数二:写入的块数

参数三:IO请求的号码


9.等待时间:完成所有IO所占用的实际时间。

扫描二维码关注我的微学堂

搜索刘老师微信号:Rman-2014,备注“Oracle学习与咨询”,即可添加好友;或者扫描下面二维码,关注我的“微学堂”公众号,了解最新OCP认证动态、题库及答案解析、培训机构及讲师介绍、课堂授课内容等。每天还有一篇技术文章发布哦!


最后修改时间:2019-12-20 16:37:29
文章转载自Oracle微学堂,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论