Oracle10g新特性——等待接口
2008-08-30 12:44:37 来源:WEB开发网另外一个需要注意的重要信息就是字段WAIT_TIME的值是-2。一些平台,如Windows,不支持快速计时机制。如果在哪些平台上,初始化参数TIMED_STATISTICS没有设置为on,就无法检测到精确的计时统计。在那样的情况下,在Oracle9i中,这个字段的值是一个非常大的值,它会让以后的问题定位产生混乱。在10g中,值-2就表示是这种情况——平台不支持快速计时机制并且TIME_STATISTICS被设置为off。
会话也会显示等待信息
还记得前面说需要将视图V$SESSION_WAIT和V$SESSION连接查询来获取关于会话的细节信息吗?在10g中,这将成为历史。10g中的视图V$SESSION也会显示和V$SESSION_WAIT一样的等待事件信息。以下便是V$SESSION用于显示会话当前所等待的等待事件而新增的字段。
EVENT# NUMBER
EVENT VARCHAR2(64)
P1TEXT VARCHAR2(64)
P1 NUMBER
P1RAW RAW(4)
P2TEXT VARCHAR2(64)
P2 NUMBER
P2RAW RAW(4)
P3TEXT VARCHAR2(64)
P3 NUMBER
P3RAW RAW(4)
WAIT_CLASS_ID NUMBER
WAIT_CLASS# NUMBER
WAIT_CLASS VARCHAR2(64)
WAIT_TIME NUMBER
SECONDS_IN_WAIT NUMBER
STATE VARCHAR2(19)
这些字段和V$SESSION_WAIT中的是一样的,并且显示的信息也相同。这样就无需再查询V$SESSION_WAIT视图了,要获取到会话的等待信息就只需要查询一个视图就行了。
让我们看看前面这个例子:SID为269的会话正在等待事件enq: TX ?C row lock contention。这表示它正在等待另外一个会话持有的锁。要诊断这个问题,你就必须定位到另外一个会话。如何做呢?
在9i和以下版本中,你可能需要写一个复杂的查询来获取到持有锁的会话的SID。在10g中,你就只需要执行以下查询就可以了:
赞助商链接