ablog

不器用で落着きのない技術者のメモ

AWR に永続化された SQL Monitor を抽出する

だいぶ前にブログに書いたつもりで書いてなかったのでメモ。

  • SQL_ID から REPORT_ID を調べる
column key1 format a30;
SELECT REPORT_ID, KEY1 FROM DBA_HIST_REPORTSWHERE KEY1 = 'gxsc2sdj0xz39' ORDER BY KEY1, REPORT_ID; 
  -- SQL_ID を指定

   REPORT_ID KEY1
  ---------- ------------------------------
     164409 gxsc2sdj0xz39
     164520 gxsc2sdj0xz39
     164632 gxsc2sdj0xz39
     ↑の3つの REPORT_ID の SQL Monitor を出力します
  • SQL*Plus の出力設定を行う
set trimspool on
set trim on
set pages 0
set linesize 1000
set long 1000000
set longchunksize 1000000
set time on
col spool_file_name new_value spool_file_name for a100
  • テキスト形式で SQL Monitor を取得する
select 'sqlmonitor_gxsc2sdj0xz39_164409_'||to_char(sysdate,'YYYY-MM-DD-HH24MISS')||'.txt' spool_file_name from dual; 
spool &spool_file_name
SELECT DBMS_AUTO_REPORT.REPORT_REPOSITORY_DETAIL(RID => 164409, TYPE => 'text') FROM dual;
spool off
  • Active形式で SQL Monitor を取得する
select 'sqlmonitor_gxsc2sdj0xz39_164409_'||to_char(sysdate,'YYYY-MM-DD-HH24MISS')||'.html' spool_file_name from dual;
spool &spool_file_name
SELECT DBMS_AUTO_REPORT.REPORT_REPOSITORY_DETAIL(RID => 164409, TYPE => 'active') FROM dual;
spool off