ORACLE 一時セグメントの使用量と対象SQL


Oracleで一時セグメントの使用量を表示する

Oracleで分析系SQLを発行していた時、一時セグメントがあふれました。

どうやら大量データ×大量データのjoinが頻発していた模様。

そこで一時セグメントの使用量と浪費しているSQLを見つけ出す為のメモ。

こんな感じ。

select
    ses.USERNAME,
    to_char(seg.blocks * 8192 /1024/1024, '999,999.000') Mbytes,
    ses.SCHEMANAME,
    ses.OSUSER,
    ses.PROGRAM,
    sqla.SQL_FULLTEXT
from
    v$tempseg_usage seg
    inner join v$session ses on(seg.SESSION_ADDR=ses.SADDR)
    inner join v$sqlarea sqla on(seg.SQL_ID=sqla.SQL_ID)
order by 1,2 desc

 


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です