回答:
これがジョブを実行するSQLです。試用版を開きます。
ステップ1:インストールIDとユーザーIDを決定します。
SELECT inst_id,sid FROM gv$session WHERE username='<ENTER-USERNAME>';
ステップ2:
SELECT
s.sid
,s.CLIENT_INFO
,s.MACHINE
,s.PROGRAM
,s.TYPE
,s.logon_time
,s.osuser
,sq.sorts
,sq.DISK_READS
,sq.BUFFER_GETS
,sq.ROWS_PROCESSED
,sq.SQLTYPE
,sq.SQL_TEXT
FROM gv$session s
, gv$sql sq
WHERE s.SQL_HASH_VALUE = sq.HASH_VALUE
AND s.inst_id = :inst_id -- replace with instID from above
AND s.sid = :sid -- replace with ID from above
AND sq.inst_id = s.inst_id
複数のIDとインスタンスIDが返される場合があります。そのため、Webインターフェースなどでこのデータを使用する方法は、ユーザーの選択次第です。
in
タプルを使用した演算子(どのバージョンからのアイデアもありません)をサポートしているため、上記の例から... AND (s.inst_id, s.sid) in ( (:id1, :sid1), (:id2, :sid2), ... )
Oracles Enterprise Monitorコンソールは、どのSQLクエリが最大CPU、ボトルネック、データベースのトップアクティビティ、SQLのブロックなどを行っているかに関する豊富な情報を表示します。
を使用することもできV$SQL
ますRUNTIME_MEM, EXECUTIONS, DISK_READS, SORTS, ELAPSED_TIME, SQL_FULLTEXT
。いくつかの興味深い列などがあります。
これにより、ディスク読み取りごとに上位10個のステートメントが得られます(注-これはすべての実行で累積されます)。
select sql_id,child_number from
(
select sql_id,child_number from v$sql
order by disk_reads desc
)
where rownum<11
ステートメントがまだある場合はV$SQL_PLAN
、クエリの実際のExplain Planを取得できます。
select * from table(dbms_xplan.display_cursor('sql_id',child_number));
また、V$SQL_PLAN
良い情報が含まれているので使用したいです。お使いの場合にstatistics_level=ALL
は、使用することができますV$SQL_PLAN_STATISTICS
。