用同样方法,你可以通过以下查询获取到整个系统范围的等待事件分类的统计信息,时间单位还是厘秒:
SQL> select * from v$system_wait_class;
WAIT_CLASS_ID WAIT_CLASS# WAIT_CLASS TOTAL_WAITS TIME_WAITED
------------- ----------- ------------- ----------- -----------
1893977003 0 Other 2483 18108
4217450380 1 Application 1352 386101
3290255840 2 Configuration 82 230
3875070507 4 Concurrency 80 395
3386400367 5 Commit 2625 1925
2723168908 6 Idle 645527 219397953
2000153315 7 Network 2125 2
1740759767 8 User I/O 5085 3006
4108307767 9 System I/O 127979 18623
大多数问题的发生都不是孤立的。在它们背后还存在一些其他问题,这些问题可以通过一种样式来定位。这一样式可以通过以下查询语句来查询一个历史视图来获得:
SQL> select wait_class#, wait_class_id,
2 average_waiter_count "awc", dbtime_in_wait,
3 time_waited, wait_count
4 from v$waitclassmetric
5 /
WAIT_CLASS# WAIT_CLASS_ID AWC DBTIME_IN_WAIT TIME_WAITED WAIT_COUNT
----------- ------------- ---- -------------- ----------- ----------
0 1893977003 0 0 0 1
1 4217450380 2 90 1499 5
2 3290255840 0 0 4 3
3 4166625743 0 0 0 0
4 3875070507 0 0 0 1
5 3386400367 0 0 0 0
6 2723168908 59 0 351541 264
7 2000153315 0 0 0 25
8 1740759767 0 0 0 0
9 4108307767 0 0 8 100
10 2396326234 0 0 0 0
11 3871361733 0 0 0 0
请注意字段WAIT_CLASS_ID和他的统计数据。对于值4217450380,我们发现有2个会话在等待这一类型的事件共5次、1499厘秒。但是这一类型等待是什么等待事件呢?你可以从视图V$SYSTEM_WAIT_CLASS中得到这个信息。如上所示,这是Application类型事件。
再注意DBTIME_IN_WAIT这一非常有用的字段。你也许还记得在10g的AWR中会在很细的粒度下记录下数据库的消耗时间。DBTIME_IN_WAIT就表示数据库消耗的等待时间。