SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Prod
PL/SQL Release 10.2.0.3.0 - Production
SQL> select name,parameter1,parameter2,parameter3,wait_class from v$event_name
2 where name in ('free buffer waits','db file parallel write','write complete waits');
NAME PARAMETER1 PARAMETER2 PARAMETER3 WAIT_CLASS
------------------------- ---------- ---------- ---------- ------------------------------------------------
free buffer waits file# block# set-id# Configuration
write complete waits file# block# Configuration
db file parallel write requests interrupt timeout System I/O
在Oracle 10g中,db file parallel write 被归属为系统I/0等待类,如果你检查到了系统出现了大量的db file parallel write事件,表明你的I/O有问题。这时你可以检查db file parallel write ,write complete waits,free buffer waits的平均等待时间
SQL> select event,time_waited,average_wait from v$system_event where event in
2 ('db file parallel write','write complete waits','free buffer waits');
EVENT TIME_WAITED AVERAGE_WAIT
---------------------------------------------------------------- ----------- ------------
db file parallel write 284 .67
我这里由于是测试机器,没有出现 write complete waits,free buffer waits 等待事件
AVERAGE_WAIT的值应该小于1(百分之一秒),如果AVERAGE_WAIT大于10(十分之一秒),表明非常缓慢的I/O,出现了db file parallel write 时常也会伴随write complete waits等待,如果是非常繁忙的OLTP系统,还可能出现free buffer waits,因为缓慢的I/0势必影响前台进程。db file parallel write只属于DBWR进程独有,不要被名字迷惑了,不要误解为该事件与并行DML有关。
---------------------------------------------------------------------------------------------------------------
1、db file parallel write:文件被DBWR并行写时发生,I/O缓慢所致
2、free buffer wait :这个等待事件表明系统正在等待内存中的可用空间,这说明当前Buffer cache中已经没有Free 的内存空间。
由于dbwr写入的慢,所以不能满足释放缓冲区的需求
3、write complete wait:前台进程不允许修改正在传输到磁盘的块;或者说,前台进程要修改的块,DBWR还没写完;所以这个等待事件的出现一定标志着dbwr进程的缓慢