oracle 从7i开始引入了wait_event ,9iR2是有400个多事件,10g有了800多个,到了11GR2,已经有了1118个,所有的事件都可以在v$event_name这个视图中找到。
oracle的wait_event 分2种,idle和non-idle, idle是oracle等待做某种工作,在诊断和优化性能的时候,不用考虑这些时间,non-idle 指数据库任务和应用在运行时发生的等待,这些等待时间是我们在进行数据库调整的时候要关注和研究的。10g后,oracle会利用statspack创建一个视图stats$idle_event 记录空闲的等待。10g以后,oracle在v$event_name 中加入了很多内容,其中的parameter1,parameter2,parameter3,这3列尤为重要,在不同的等待事件中,这3列代表了不同的含义。
例如:
select name,parameter1,parameter2,parameter3 from v$event_name where name ='db file scattered read';
NAME PARAMETER1 PARAMETER2 PARAMETER3
-------------------- -------------------- -------------------- --------------------
db file scattered re file# block# blocks
ad
select wait_class#,wait_class_id,wait_class,count(*) as "count"
2 from v$event_name
3 group by wait_class#,wait_class_id,wait_class
4 order by wait_class#;
通过上述语句可以查询到所有等待事件的分类
也可以通过查询v$system_wait_class视图获得各类主要等待事件的等待时间和等待次数等信息,通过分类以及统计信息,可以很直观地快速获得数据库的整体印象。