Oracle Wait Interface: V$EVENT_NAME

什么是 OWI (Oracle Wait Interface)? 在 Oracle Wait Interface: A Practical Guide to Performance Diagnostics & Tuning 这本书中是这么定义的:

Oracle Wait Interface is a collection of a few dynamic performance views and an extended SQL trace file.

这本书几乎覆盖了 OWI 的所有内容。是一本不错的Oracle数据库性能调整参考书。

从 7.0.12 版本开始,Oracle就有如下几个 OWI 视图:

  • V$EVENT_NAME
  • V$SESSION_WAIT
  • V$SESSION_EVENT
  • V$SYSTEM_EVENT

先分析一下这个 V$EVENT_NAME,看看在 10g 中有什么变化:

SQL> desc v$event_name;
 Name                       Null?    Type
 -------------------------- -------- ------------------
 EVENT#                              NUMBER
 NAME                                VARCHAR2(64)
 PARAMETER1                          VARCHAR2(64)
 PARAMETER2                          VARCHAR2(64)
 PARAMETER3                          VARCHAR2(64)

10g中新增了几列(注意字体加重的字段):

SQL> desc v$event_name
 Name                       Null?    Type
 -------------------------- -------- ------------------
 EVENT#                              NUMBER
 EVENT_ID                            NUMBER
 NAME                                VARCHAR2(64)
 PARAMETER1                          VARCHAR2(64)
 PARAMETER2                          VARCHAR2(64)
 PARAMETER3                          VARCHAR2(64)
 WAIT_CLASS_ID                       NUMBER
 WAIT_CLASS#                         NUMBER
 WAIT_CLASS                          VARCHAR2(64)

其中,PARAMETER1、PARAMETER2 PARAMETER3 对应 V$SESSION_WAIT 中的 P1、P2、P3,这是非常重要的几列。

基本用法:

SQL> SELECT   wait_class#, wait_class_id, wait_class
  2      FROM v$event_name
  3  GROUP BY wait_class#, wait_class_id, wait_class;

WAIT_CLASS# WAIT_CLASS_ID WAIT_CLASS
----------- ------------- ------------------------------
          0    1893977003 Other
          1    4217450380 Application
          2    3290255840 Configuration
          3    4166625743 Administrative
          4    3875070507 Concurrency
          5    3386400367 Commit
          6    2723168908 Idle
          7    2000153315 Network
          8    1740759767 User I/O
          9    4108307767 System I/O
         10    2396326234 Scheduler
         11    3871361733 Cluster

12 rows selected.

与 v$system_event 视图联合使用:

SQL> SELECT   n.wait_class, SUM (e.time_waited) / 1000000 time_waited
  2      FROM v$event_name n, v$system_event e
  3     WHERE n.NAME = e.event
  4  GROUP BY n.wait_class;

WAIT_CLASS                     TIME_WAITED
------------------------------ -----------
Application                              0
Commit                             .000024
Concurrency                        .000022
Configuration                      .000015
Idle                              3.669178
Network                                  0
Other                              .002454
System I/O                         .000393
User I/O                           .004079

9 rows selected.

v$event_name 从 X$ 表 X$ksled(Kernel Service Latch Event Descriptors) 而来(感谢 Rudolf Lu 友情提供的方便而实用的脚本!),创建语句类似如下:

SELECT inst_id, indx, ksledhash, kslednam, ksledp1, ksledp2, ksledp3,
       ksledclassid, ksledclass#, ksledclass
  FROM x$ksled;

对应的列:

MEANINGFUL NAME              X$ TABLE COLUMN NAME
=====================        ======================
event#                        indx
event_id                      ksledhash
name                          kslednam
parameter1                    ksledp1
parameter2                    ksledp2
parameter3                    ksledp3
wait_class_id                 ksledclassid
wait_class#                   ksledclass#
wait_class                    ksledclass

而 V$SESSION_WAIT 视图是基于 x$ksusecst 、x$ksled这两个固定表的,所以上文中提到的 v$event_name 的 PARAMETER1、PARAMETER2 PARAMETER3 对应 V$SESSION_WAIT 中的 P1、P2、P3 列也不足为奇了。

| | TrackBacks (0) | | Edit

Generator | Trampoline | 外贸英才网 | Vinyl fence

自定义搜索

添加评论

关于这篇文章

这篇文章由 Fenng 于 December 20, 2004 2:25 PM 发布

上一篇:Buffer Cache Flushing

下一篇:AWStats 6.3 出来了

回到首页查看最近的文章或者是查看所有归档文章

DBA notes 的订阅数量,点击则可进行订阅
Feed 订阅数量,点击即可订阅最新内容