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

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

Oracle微学堂 2017-11-20
1664
class
db file parallel write

1.与其名称暗示相反,该事件不与任何并行DML操作相关。


2.该等待事件属于DBWR进程,DBWR进程负责向数据文件写入脏数据块的唯一进程,即DBWR进程执行对使用SGA的所有数据库写入。阻塞该进程的是操作系统的IO子系统。当然DBWR进程的写入操作也会对同一磁盘操作的其他会话造成影响。


3.DBWR查找脏块的时机:

>> 每隔三秒一次的查找。

>> 当前台提交需要清除缓冲区内容时。

>>当满足_DB_LARGE_DIRTY_QUEUE _DB_BLOCK_MAX_DIRTY_TARGET FAST_START_MTTR_TARGET阈值。


4.缓慢的DBWR操作可以造成前台会话在write complete waits(前台不允许修改正在传输到磁盘的块)或free buffer waits(DBWR不能满足释放缓冲区的需求)事件上。通过以下语句可以获知该事件的平均等待时间,如果平均等待时间大小10cs,则表明IO缓慢。如果不存在db file parallel write事件,很可能初始化参数disk_async_io=FALSE,这种情况一般发生在AIX和HPUX平台上。

SELECT s.event, s.time_waited, s.average_wait
FROM v$system_event s
WHERE s.event IN ('db file parallel write', 'free buffer waits',
 'write complete waits')

相关查询:

SELECT *
FROM v$sysstat
WHERE NAME IN ('write clones created in background',
 'write clones created in foreground')


5.操作说明:DBWR将一组脏数据编成"写入批量组",然后发布多个IO请求以将"写入批量组"写入数据文件,然后以此事件等待直到IO请求都完成。但是,当使用异步IO时,DBWR不等待整个批量写入完成,仅等待一定百分比的IO操作完成后,就将空闲缓冲区推到LRU链以使其可用。


6.解决方法:

>> 如果平均等待时间长,要选择使用正确的IO操作。如果数据文件在裸设备上,并且平台支持异步IO,请应该使用异步IO。如果数据文件位于文件系统上,则应该使用同步写入和直接IO。相关的初始化参数是DISK_ASYNCH_IO和FILESYSTEMIO_OPTIONS。

>> 如果重做位于祼设备上,而数据文件位于文件系统上,则可以设置DISK_ASYNCH_IO=TRUE,FILESYSTEMIO_OPTIONS=DIRECTIO。使用这种方法可以获得对于祼设备使用异步IO,而对于文件系统使用直接IO的效果。

>> 使用DB_WRITER_PROCESSES选项产生多个DBWR进程。


7.参数说明:

事件号:190

事件名:db file parallel write

参数一:requests(DBWR写入批量的大小-块数)

参数二:interrupt(中断)

参数三:timeout(超时)


8.等待时间:无超时

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

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



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

评论