非空闲的等待事件-db file parallel write
2014-05-14 15:04
337 查看
转载:http://blog.itpub.net/79291/viewspace-910224/
db file parallel write
(SYSTEM I/0类)(DBWR专属等待事件)
与其名称暗示相反,该事件不与任何并行DML操作相关。
该等待事件属于DBWR进程,DBWR进程负责向数据文件写入脏数据块的唯一进程,即DBWR进程执行对使用SGA的所有数据库写入。阻塞该进程的是操作系统的IO子系统。当然DBWR进程的写入操作也会对同一磁盘操作的其他会话造成影响。
DBWR查找脏块的时机:
>> 每隔三秒一次的查找。
>> 当前台提交需要清除缓冲区内容时。
>> 当满足_DB_LARGE_DIRTY_QUEUE / _DB_BLOCK_MAX_DIRTY_TARGET / FAST_START_MTTR_TARGET阈值。
[@more@]
缓慢的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')
操作说明:DBWR将一组脏数据编成"写入批量组",然后发布多个IO请求以将"写入批量组"写入数据文件,然后以此事件等待直到IO请求都完成。但是,当使用异步IO时,DBWR不等待整个批量写入完成,仅等待一定百分比的IO操作完成后,就将空闲缓冲区推到LRU链以使其可用。
解决方法:
>> 如果平均等待时间长,要选择使用正确的IO操作。如果数据文件在裸设备上,并且平台支持异步IO,请应该使用异步IO。如果数据文件位于文件系统上,则应该使用同步写入和直接IO。相关的初始化参数是DISK_ASYNCH_IO和FILESYSTEMIO_OPTIONS。
>> 如果重做位于祼设备上,而数据文件位于文件系统上,则可以设置DISK_ASYNCH_IO=TRUE,FILESYSTEMIO_OPTIONS=DIRECTIO。使用这种方法可以获得对于祼设备使用异步IO,而对于文件系统使用直接IO的效果。
>> 使用DB_WRITER_PROCESSES选项产生多个DBWR进程。
参数说明:
事件号:190
事件名:db file parallel write
参数一:requests(DBWR写入批量的大小-块数)
参数二:interrupt(中断)
参数三:timeout(超时)
等待时间:无超时
db file parallel write
(SYSTEM I/0类)(DBWR专属等待事件)
与其名称暗示相反,该事件不与任何并行DML操作相关。
该等待事件属于DBWR进程,DBWR进程负责向数据文件写入脏数据块的唯一进程,即DBWR进程执行对使用SGA的所有数据库写入。阻塞该进程的是操作系统的IO子系统。当然DBWR进程的写入操作也会对同一磁盘操作的其他会话造成影响。
DBWR查找脏块的时机:
>> 每隔三秒一次的查找。
>> 当前台提交需要清除缓冲区内容时。
>> 当满足_DB_LARGE_DIRTY_QUEUE / _DB_BLOCK_MAX_DIRTY_TARGET / FAST_START_MTTR_TARGET阈值。
[@more@]
缓慢的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')
操作说明:DBWR将一组脏数据编成"写入批量组",然后发布多个IO请求以将"写入批量组"写入数据文件,然后以此事件等待直到IO请求都完成。但是,当使用异步IO时,DBWR不等待整个批量写入完成,仅等待一定百分比的IO操作完成后,就将空闲缓冲区推到LRU链以使其可用。
解决方法:
>> 如果平均等待时间长,要选择使用正确的IO操作。如果数据文件在裸设备上,并且平台支持异步IO,请应该使用异步IO。如果数据文件位于文件系统上,则应该使用同步写入和直接IO。相关的初始化参数是DISK_ASYNCH_IO和FILESYSTEMIO_OPTIONS。
>> 如果重做位于祼设备上,而数据文件位于文件系统上,则可以设置DISK_ASYNCH_IO=TRUE,FILESYSTEMIO_OPTIONS=DIRECTIO。使用这种方法可以获得对于祼设备使用异步IO,而对于文件系统使用直接IO的效果。
>> 使用DB_WRITER_PROCESSES选项产生多个DBWR进程。
参数说明:
事件号:190
事件名:db file parallel write
参数一:requests(DBWR写入批量的大小-块数)
参数二:interrupt(中断)
参数三:timeout(超时)
等待时间:无超时
相关文章推荐
- Oracle db file parallel write 和 log file parallel write 等待事件 说明
- Oracle db file parallel write 和 log file parallel write 等待事件 说明
- db file parallel write等待事件
- I/O上的等待事件 —— db file parallel write
- db file parallel write等待事件
- control file parallel write等待事件
- Oracle等待事件之log file parallel write
- 深入了解db file parallel read等待事件
- log file sync(日志文件同步) 与 Log file parallel write 等待事件(1)
- db file parallel read等待事件
- 非空闲等待事件之:db file scattered read(转)
- 非空闲等待事件之:db file sequential read(转)
- control file parallel write等待事件
- log file sync(日志文件同步) 与 Log file parallel write 等待事件(2)
- Oracle之 等待事件log file sync + log file parallel write (awr优化)
- log file sync 与 log file parallel write 等待事件
- Oracle之 等待事件log file sync + log file parallel write (awr优化)
- I/O上的等待事件 —— control file parallel write
- log file sync(日志文件同步) 与 Log file parallel write 等待事件
- log file sync(日志文件同步) 与 Log file parallel write 等待事件