Oracle

  (最終更新日:2014.08.23)

長時間動いているセッション(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 を取得することができません。無念。

スポンサーリンク
スポンサーリンク

関連記事

  1. Oracle

    (解決策)テーブルを作成しようとしたらORA-01950エラーで権限が無いと怒られたとき

    dba権限が無いユーザーでOracleデータベースにテーブルを作成しよ…

  2. Oracle

    【Oracle】統計情報のバックアップとリカバリの方法

    Oracleの統計情報をユーザー単位でバックアップする方法と、バックア…

  3. Oracle

    【Oracle】Data Pumpでシーケンスのみを移行する方法

    Data Pumpでは inculde を利用することでシーケンスのみ…

  4. Oracle

    Statspackの取り方:テキスト形式のレポートをコマンドで出力する

    Oracleの障害や状況調査で役に立つStatspackレポートをテキ…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

最近の記事

  1. PHP PhantomJSでFatal error: Unc…
  2. 【Oracle】DataPumpの対話式コマンドモードを抜け…
  3. CentOS7のPHP5.6にPhpSpreadsheetを…
  4. Azure仮想マシン(CentOS 7)のStandardデ…
  5. 【CentOS 7】特定ユーザーのクォータ設定を削除(無制限…
PAGE TOP