等待事件在10G中的加强(二)
2009-11-27
视图的加强:
v$event_name
9I
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)
红色的字段是在10G中新加的。主要是用来把等待事件归并到合适的类别中。至于划分类别的好处看前一篇文章。
v$sql 和 v$sqlarea
在10g,和等待事件有关的字段增加了以下内容:
application_wait_time
concurrency_wait_time
cluster_wait_time
user_io_wait_time
plsql_exec_time
java_exec_time
Oracle官方文档对此没有做任何有意义的说明,还是通过例子来说明。
环境:
T2里有10多万的记录,一个session需要更新前99行。
SQL> update t2 set wner='KK' where rownum < 100;
99 rows updated.
另外的一个session同时执行相同的sql:
SQL> update t2 set wner='KK' where rownum < 100;
这是会导致等待事件。
我们可以通过v$session试图来查看:
select sid, sql_id, PREV_SQL_ID , BLOCKING_SESSION_STATUS , BLOCKING_SESSION ,WAIT_CLASS_ID,SECONDS_IN_WAIT ,WAIT_CLASS from v$session where
2 username='KONG';
SID SQL_ID PREV_SQL_ID BLOCKING_SESSION_STATUS BLOCKING_SESSION WAIT_CLASS_ID SECONDS_IN_WAIT WAIT_CLASS
---------- ------------- ------------- --------------------------------- ---------------- ------------- --------------- ----------------------------------------------------------------
290 0hcsvq77pq2a8 dyk4dprp70d74 VALID 300 4217450380 118 Application
300 0hcsvq77pq2a8 NO HOLDER 2723168908 124 Idle
可以看到SID 为300的session阻塞了SID为290的session,等待的原因为Application。
这是不再需要联合v$session和v$session_wait试图。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/40239/viewspace-620889/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/40239/viewspace-620889/