首页 > Linux操作系统 > Linux操作系统 > V$event_name
V$event_name 视图不是动态的v$视图,它提供的信息并不随时间而变化。它是参考视图,包含所有为数据库实例定义的等待事件。
名称 是否为空? 类型
----------------------------------------- -------- --------------
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)
SQL> select count(1) from v$event_name;
COUNT(1)
----------
874 --说明此版本及所选的安装选项中共包含874个等待事件。
event#是事件的唯一编号,该编号是由Oracle代码中的编译时间宏生成,所以对于同一等待事件,从一个Oracle版本到另一个版本时,这一编号会发生变化。
event_id列,包含基于事件名称的一个散列值。只要该事件名称不变,改散列值在不同的版本间就会保持不变。
name包含等待事件的名称,每个等待事件最多有三个属性,分别记录在parameter1, parameter2, parameter3列中。这些属性给出等待事件每次发生时的特定信息。
wait_class_id包含等待类名的散列值,只要等待类名不变,该散列值将在版本间保持不变。
wait_class# 包含wait_class的唯一编号,该编号可能随版本变化而改变。
wait_class 包含等待事件类的实际名称。
其中parameter1,parameter2,parameter3对应v$session_wait中的p1,p2,p3 这是非常重要的几列。
与v$system_event视图联合使用: select n.wait_class, sum(e.time_waited)/1000000 time_waited
from v$event_name n, v$system_event e where n.name=e.event group by n.wait_class.
WAIT_CLASS TIME_WAITED
-------------------- -----------
Concurrency .028576
User I/O .03034
System I/O .059107
Administrative .000001
Configuration .000074
Other .002279
Application .005651
Idle 559.781838
Commit .002759
Network .000091
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 列也不足为奇了。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/756802/viewspace-660547/ ,如需转载,请注明出处,否则将追究法律责任。