V$SESSION_EVENT - Oracle Wait Interface Memo


作者:Fenng
出处:http://www.dbanotes.net
日期:December 29, 2004

« When One Can Call Oneself EXPERT | Blog首页 | Scaling Oracle8i »


v$session_event 记载了当前连接到数据库的所有会话的统计信息,从名字上也可以看出来,这是个会话级(Session Level)的动态视图。

继续以 Oracle Wait Interface: A Practical Guide to Performance Diagnostics & Tuning 这本书为参考,分析 OWI 。先看看v$session_event 的数据结构:

SQL> desc v$session_event
 Name                                   Null?    Type
 -------------------------------------- -------- --------------------------
 SID                                             NUMBER
 EVENT                                           VARCHAR2(64)
 TOTAL_WAITS                                     NUMBER
 TOTAL_TIMEOUTS                                  NUMBER
 TIME_WAITED                                     NUMBER
 AVERAGE_WAIT                                    NUMBER
 MAX_WAIT                                        NUMBER
 TIME_WAITED_MICRO                               NUMBER
 EVENT_ID                                        NUMBER //10g's New Column

SQL> 

V$SESSION_EVENT 语句由 X$KSLES (Kernel Service Current Session statistics) 和 x$ksled(Kernel Service Latch Event Descriptors) 这两个固定表得来。(致谢:抽取脚本由 Rudolf 友情提供,下载 )

SELECT s.inst_id, s.kslessid, d.kslednam, s.ksleswts, s.kslestmo,
       ROUND (s.kslestim / 10000), ROUND (s.kslestim / (10000 * s.ksleswts)),
       ROUND (s.kslesmxt / 10000), s.kslestim, d.ksledha sh
  FROM x$ksles s, x$ksled d
 WHERE s.ksleswts != 0 AND s.kslesenm = d.indx;

v$session_event 结构中包含 SID ,要想获取其中的内容,可能需要首先获取 SID 信息。可以通过 v$session 视图来做到,也可以利用 DBMS_SUPPORT 包来获取 SID 。要注意:在 Oracle RDBMS 9.2.0.1 与 9.2.0.2 中,因为 Bug:2429929 的影响,V$SESSION_EVENT.SID 是错误的(需要在该值的基础上+1)。

常用的 SQL 举例:

SQL> col sid      format 999
SQL> col event    format a30
SQL> col username format a8
SQL> SELECT   b.SID,
  2           DECODE (b.username,
  3                   NULL, SUBSTR (b.program, 18),
  4                   b.username
  5                  ) username,
  6           a.event, a.total_waits , a.time_waited ,
  7           a.average_wait, a.max_wait
  8      FROM v$session_event a, v$session b
  9     WHERE b.SID = a.SID and b.username='SCOTT'
 10  ORDER BY 1, 4;

 SID USERNAME EVENT                          TOTAL_WAITS TIME_WAITED AVERAGE_WAIT   MAX_WAIT
---- -------- ------------------------------ ----------- ----------- ------------ ----------
 217 SCOTT      SQL*Net more data from client            2           0            0          0
 217 SCOTT      SQL*Net break/reset to client            2           0            0          0
 217 SCOTT      SQL*Net more data to client             11           0            0          0
 217 SCOTT      SQL*Net message from client             88      151790         1725      85964
 217 SCOTT      SQL*Net message to client               89           0            0          0


SQL> 

v$session_event 中比较重要的列是 TIME_WAITED 与 MAX_WAIT 。MAX_WAIT 列记载了每个会话每个时间的最大等待时间。可以通过执行

execute dbms_system.kcfrms;

来重置该列信息。Ora-600 写了一篇 新的Oracle时间信息特性 。内容很有参考价值。


Posted by Fenng at December 29, 2004 03:12 PM
Last updated at 06:20 PM on August 20, 2005


相关文章

Trackback Pings

TrackBack URL for this entry:
http://www.dbanotes.net/mt/mt-tb.cgi/46

Listed below are links to weblogs that reference V$SESSION_EVENT - Oracle Wait Interface Memo:

» real estate clam lake wisconsin from real estate clam lake wisconsin
[Read More]

Tracked on April 9, 2007 07:08 AM

» corporate gift online wine from corporate gift online wine
[Read More]

Tracked on April 10, 2007 06:00 AM

» george washington carver lesson plan from george washington carver lesson plan
[Read More]

Tracked on April 10, 2007 08:13 AM

» amazing bagpipe grace played from amazing bagpipe grace played
[Read More]

Tracked on April 14, 2007 06:40 AM

Comments


您好,
请问为什么有v$session_event sid 和 v$session 种关联不到的情况?比如我查v$session_event 有sid 13 但是v$session 中没有,v$session_wait中也没有。

Posted by: gclizh at May 16, 2005 05:53 PM

您好,
为什么会出现v$session_event 中的sid 在v$session 中不存在的现象?(刚才发了一次,但是不知道为什么看不到。)

Posted by: gclizh at May 16, 2005 05:58 PM

V$SESSION_EVENT.SID = V$SESSION.SID - 1

看看能取到不?不同的版本有Bug的

Posted by: Fenng at May 17, 2005 09:33 PM

V$SESSION_EVENT.SID = V$SESSION.SID - 1 这样倒是可以取到关联不上的那条,但是其他的就不关联不上了。
真是什么bug都有啊,8i上好像没这个问题,9201却有。

Posted by: gclizh at May 18, 2005 11:23 PM

好像是bug:3566136

Posted by: gclizh at May 19, 2005 12:15 AM

实际v$process

Posted by: angelsliu at June 14, 2005 02:21 PM

Post a comment



Hint: 为避免您收到垃圾邮件,请尽量不用使用真实的邮件地址.


Remember Me?