長時間動いているセッション(SQL)の情報を取得するSQL

Oracleで長時間稼働している処理(SQL)の情報を取得するSQLがあります。
方法は簡単で v$session を利用するだけ。セッションがアクティブになってからの経過時間(秒)を表す last_call_et を確認します。

SELECT
    last_call_et,
    state,
    event,
    username,
    osuser,
    machine,
    terminal,
    program,
    sid,
    serial#,
    status,
    sql_address,
    q.sql_id
FROM
    v$session s
    left join v$sqltext q on(s.sql_id = q.sql_id)
WHERE
    type = 'USER' AND
    STATUS = 'ACTIVE'
group by
    last_call_et,
    state,
    event,
    username,
    osuser,
    machine,
    terminal,
    program,
    sid,
    serial#,
    status,
    sql_address,
    q.sql_id
ORDER BY
    last_call_et desc

取得した情報から該当のSQLのセッションID、SQL_IDなどが確認できます。 しかし中には SQL_ID が Unknown となっている場合もあるのでその場合は SQL_ID を取得することができません。無念。

コメントを残す

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