数分待っていてまったく実行されていないクエリがあります。
SQL Developerモニターセッションビューで、クエリが667秒間待機していることが示されますか?
このクエリが待機状態になっている理由を確認するにはどうすればよいですか?
セッションが待機していると思うのはなぜですか?
ステートメントがCPUを使用する場合、それは待機していません。処理にCPUを使用することを説明する待機イベントはありません。人々はしばしばこれを忘れます。ほとんどの場合、セッションはCPUを使用しています。出力に、セッションが待機中であることを示すものはありません。
SECONDS_IN_WAIT
セッションが現在待機している場合、値は現在の待機を待機した時間です。 セッションが待機していない場合は、、値は最後の開始以降の時間です待機。
WAIT_TIME
もクエリする必要があります。
待ち時間
セッションが現在待機している場合、値は0です。
セッションがON CPU
であることを確認する別の方法は、ASHをクエリすることです。
ASHでは、SESSION_STATE
列に2つの異なる値があります。
SESSION_STATE
セッション状態:
待機中
CPU上
もう1つの方法は、V$SESSTAT
(V$STATNAME
と結合)に統計CPU time
が増加するかどうかを照会することです。
これをテストするために、任意のCPUバインドクエリを実行できます。たとえば、次のクエリはCPUしか使用しません。開始すると、セッションが待機していないがCPUを使用している間、SECONDS_IN_WAIT
が増加します。
with g as (select * from dual connect by level <= 1000)
select count(*) from g,g,g,g;
セッションのすべての累積待機を表示するには、V$SESSION_EVENT
。これは、ビューを現在の待機だけに制限するものではありません。
動的パフォーマンスビューをクエリできますV $ SESSION_WAIT
次のように:
select sid, seq#, EVENT, WAIT_CLASS, SECONDS_IN_WAIT from v$session_wait where sid=<SESSION_SID>
「EVENT」フィールドを見てください。