Top > 動的パフォーマンス・ビュー > V$SESSION と V$SQLSTATS の関係

V$SESSION と V$SQLSTATS の ER 的な関係

V$SQLSTATS ビューは Oracle 10gR2 から用意されたビューで V$SQL および V$SQLAREA よりパフォーマンスに優れている。 また、共有プールから消されても参照可能であり保持期限についても優位性がある。
HASH_VALUE , ADDRESS は SQL_ID に統合されているため用意されていない。(OLD_HASH_VALUE もない)

V$SESSION と V$SQLSTATS

各ビューの全カラムの詳細は V$SESSION(詳細) および V$SQLSTATS(詳細) Oracle 10g Release2 を参照。

 

V$SESSION と V$SQLSTATS の結合例

ユーザーセッションで現在実行中、または、直前に実行していた SQL、実行開始日時、現在ステータスになってからの経過秒数、1実行当たりのCPU 処理時間などを表示する。

SELECT 
  S.STATUS, S.USERNAME,
  NVL(S.SQL_EXEC_START, S.PREV_EXEC_START) "実行日時",
  S.LAST_CALL_ET "状態維持秒数",
  ROUND(
    CASE WHEN Q.EXECUTIONS > 0 THEN Q.CPU_TIME / Q.EXECUTIONS / 1000
    ELSE 0 END, 2
  ) "CPU時間(ミリ)",
  Q.SQL_TEXT
FROM
  V$SESSION S, V$SQLSTATS Q
WHERE
  S.USER# <> 0
  AND Q.SQL_ID(+) = NVL(S.SQL_ID, S.PREV_SQL_ID)
ORDER BY
  CASE STATUS WHEN 'ACTIVE' THEN 1 WHEN 'INACTIVE' THEN 2 ELSE  9 END,
  CASE WHEN Q.EXECUTIONS > 0 THEN Q.CPU_TIME / Q.EXECUTIONS ELSE 0 END DESC

(注) 動的パフォーマンス・ビューの結合処理は正式にはサポートされていません。

 

実行結果の例 (Windows + Oracle 11g の場合)

STATUSUSERNAME実行日時状態維持秒数CPU時間(ミリ)SQL_TEXT
ACTIVERIVUS2010/06/19 00:45:1802.91"SELECT S.STATUS, S.USERNAME, NVL(S.SQL_EXEC_START, S.PREV_EXEC_START) "実行日時", S.LAST_CALL_ET "状態維持秒数", ROUND(CASE WHEN Q.EXECUTIONS > 0 THEN Q.CPU_TIME / Q.EXECUTIONS / 1000 ELSE 0 END, 2) ”CPU時間(ミリ)", Q.SQL_TEXT FROM V$SESSION S, V$SQLSTATS Q WHERE S.USER# <> 0 AND Q.SQL_ID(+) = NVL(S.SQL_ID, S.PREV_SQL_ID) ORDER BY CASE STATUS WHEN 'ACTIVE' THEN 1 WHEN 'INACTIVE' THEN 2 ELSE 9 END, CASE WHEN Q.EXECUTIONS > 0 THEN Q.CPU_TIME / Q.EXECUTIONS ELSE 0 END DESC "
INACTIVERIVUS2010/06/19 00:34:4130347.81select * from xxx
INACTIVERIVUS2010/06/19 00:09:0121690delete from xxx
以下 省略
 


日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ Oracle Web セミナー