web-dev-qa-db-ja.com

このクエリが待機状態になっている理由を確認するにはどうすればよいですか?

数分待っていてまったく実行されていないクエリがあります。

SQL Developerモニターセッションビューで、クエリが667秒間待機していることが示されますか?

enter image description here

このクエリが待機状態になっている理由を確認するにはどうすればよいですか?

1
Kshitiz Sharma

セッションが待機していると思うのはなぜですか?

ステートメントがCPUを使用する場合、それは待機していません。処理にCPUを使用することを説明する待機イベントはありません。人々はしばしばこれを忘れます。ほとんどの場合、セッションはCPUを使用しています。出力に、セッションが待機中であることを示すものはありません。

V $ SESSION

SECONDS_IN_WAIT

セッションが現在待機している場合、値は現在の待機を待機した時間です。 セッションが待機していない場合は、、値は最後の開始以降の時間です待機

WAIT_TIMEもクエリする必要があります。

待ち時間

セッションが現在待機している場合、値は0です。

セッションがON CPUであることを確認する別の方法は、ASHをクエリすることです。

V $ ACTIVE_SESSION_HISTORY

ASHでは、SESSION_STATE列に2つの異なる値があります。

SESSION_STATE

セッション状態:

待機中

CPU上

もう1つの方法は、V$SESSTATV$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;
1
Balazs Papp

セッションのすべての累積待機を表示するには、V$SESSION_EVENT。これは、ビューを現在の待機だけに制限するものではありません。

0
durette

動的パフォーマンスビューをクエリできますV $ SESSION_WAIT

次のように:

select sid, seq#, EVENT,  WAIT_CLASS,  SECONDS_IN_WAIT from v$session_wait where sid=<SESSION_SID>

「EVENT」フィールドを見てください。

0
Fabiano Lira