Oracle OWI等待事件视图(v$session_wait/v$session_event/v$system_event)(二)
间(百分之一秒)
TIME_WAITED_MICRO NUMBER Y
EVENT_ID NUMBER Y
WAIT_CLASS_ID NUMBER Y
WAIT_CLASS# NUMBER Y
WAIT_CLASS VARCHAR2(64) Y
6、视图v$system_event
显示自实例启动后所有Oracle会话遇到的所有等待时间的总和,包括等待的总次数,总超时,是所有会话的在所有等待事件上的汇总。
SQL> desc v$system_event;
Name Type Nullable Default Comments
----------------- ------------ -------- ------- --------
EVENT VARCHAR2(64) Y
TOTAL_WAITS NUMBER Y
TOTAL_TIMEOUTS NUMBER Y
TIME_WAITED NUMBER Y
AVERAGE_WAIT NUMBER Y
TIME_WAITED_MICRO NUMBER Y
EVENT_ID NUMBER Y
WAIT_CLASS_ID NUMBER Y
WAIT_CLASS# NUMBER Y
WAIT_CLASS VARCHAR2(64) Y
7、演示等待事件
[sql]
-->查看当前数据库的总session数
goex_admin@SYBO2SZ> select count(*) from v$session;
COUNT(*)
----------
20
--查看数据库当前的总等待事件数
--下面的查询结果与session数的值相等,也即是一个session对应一个空闲或非空闲等待事件
goex_admin@SYBO2SZ> select count(*) from v$session_wait;
COUNT(*)
----------
20
--开一个session 1 来update emp
--session 1
scott@SYBO2SZ> update emp set sal=sal+100 where deptno=20;
--开启另外一个session 2来尝试delete emp上的一些记录
--session 2此时处于阻塞状态
scott@SYBO2SZ> delete from emp where deptno=20;
--可以看到当前数据库sid为1067上存在一个enq等待事件(1067为session 2的SID)
goex_admin@SYBO2SZ> select sid,event,wait_class,wait_time,seconds_in_wait,state from v$session_wait where sid=1067;
SID EVENT WAIT_CLASS WAIT_TIME SECONDS_IN_WAIT STATE
------ ----------------------------------- ------------------ ---------- --------------- -------------------
1067 enq: TX - row lock contention Application 0 960 WAITING
--在sid为1067的session中,当TX锁等待获得资源后,再次查询该session,此时已经变成了空闲等待。
goex_admin@SYBO2SZ> select sid,event,wait_class,wait_time,seconds_in_wait,state from v$session_wait where sid=1067;
SID EVENT WAIT_CLASS WAIT_TIME SECONDS_IN_WAIT STATE
------ ----------------------------------- ------------------ ---------- --------------- -------------------
1067 SQL*Net message from client Idle 0 10 WAITING
--下面的脚本查询的是基于v$session_event的等待事件
goex_admin@SYBO2SZ> @wait_event_by_sid
Enter value for sid: 1067
Enter value for sid: 1067
EVENT TIME_SPENT
----------------------------------- ----------
enq: TX - row lock contention 95489 -->总等待时间为95489,单位为百分之一秒,比seconds_in_wait更精确
CPU used when call started 4
--下面查询基于实例级别的等待事件
--当输入enq,则所有enq相关的等待记录会列出
goex_admin@SYBO2SZ> @wait_event_inst_lvl
Enter value for input_event_name: enq
Enter value for input_event_name: enq
WAIT_CLASS EVENT TOTAL_WAITS TOTAL_TIMEOUTS TIME_WAITED AVERAGE_WAIT STARTUP_TIME
-------------------- ------------------------------ ------------ -------------- ----------- --------