特定のセッションがどのイベントでどれだけ待機したのかを確認するSQL

Oracle 11gで、特定のセッションがどのイベント(db file sequential read や buffer busy waits 等)でどれだけ待機したのかを調査する際に確認するSQLです。

SELECT
    EVENT,
    TOTAL_WAITS,
    TIME_WAITED,
    TIME_WAITED_MICRO
FROM
    V$SESSION_EVENT
WHERE
    sid = 466
ORDER BY
    TOTAL_WAITS desc

各項目の値は次のとおりです。

EVENT 待機イベントの名前
TOTAL_WAITS セッションによるイベントの合計待機数
TIME_WAITED セッションによるイベントの合計待機時間(1/100秒)
TIME_WAITED_MICRO セッションによるイベントの合計待機時間(マイクロ秒)

結果の例はこのような感じになりました。今回で行くと db file sequential read のイベントでほぼ待ちになっている状況がわかります。

2014-08-28_13h30_07

これで長時間稼働していたセッションが、どの処理にどれだけコストをかけていたかを軽く確認することができるようになります。

コメントを残す

メールアドレスが公開されることはありません。