我正在尝试跟踪当前 Oracle 会话的不同等待时间类,但我一定是误解了一些东西。当我比较sum(time_waited)/1000
给定会话的时间时,gv$session_wait_class
它通常大于seconds_in_wait
from的值,gv$session
有时甚至大于last_call_et
我认为的总时间......
我在这里想念什么?为什么他们不一样?我正在将数字与此查询进行比较:
select last_call_et,wait_time,seconds_in_wait,wait_time_micro/1000000,
(SELECT SUM(time_waited)
FROM gv$session_wait_class ot WHERE
ot.sid = ses.sid
AND ot.serial# = ses.serial#
AND ot.inst_id = ses.inst_id
)/1000 as wait_time_class from gv$session ses where sql_id is not null;
从描述
v$session
:这些不是累积措施,它们仅与当前或最后一个等待事件有关。
v$session_wait_class
另一方面,总结了会话在不同等待类别中的时间。因此,可以理解的是 中指示的时间
[g]v$session_wait_class
大于您在 中查看的时间[g]v$session
。然而,相反的情况也可能是正确的,这取决于何时在等待类视图中考虑等待。如果一旦等待事件结束而不是动态地计算(我认为这就是发生的情况),则当前等待可能大于先前等待的总和。