AWR と ASH の使い方
記録から性能を診る(Oracle・Diagnostics Pack)
書き方
EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT; SELECT snap_id, begin_interval_time, end_interval_time FROM dba_hist_snapshot ORDER BY snap_id; SELECT output FROM TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_TEXT(dbid, 1, 開始の snap_id, 終わりの snap_id)); SELECT sql_id, event, COUNT(*) FROM v$active_session_history WHERE sample_time > SYSTIMESTAMP - INTERVAL '30' MINUTE GROUP BY sql_id, event;
AWR(Automatic Workload Repository)は、統計の累計を 1 時間ごとにスナップショットとして残します。2 つのスナップショットの差がレポートで、Top 10 Foreground Events(何を待っていたか)と SQL ordered by Elapsed Time(どの SQL が時間を使ったか)を読みます。ASH(Active Session History)は、動いているセッションを 1 秒ごとに記録したもの。どちらも Enterprise Edition の Diagnostics Pack のライセンスが必要です(CONTROL_MANAGEMENT_PACK_ACCESS)。
例
EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT; SELECT dbid FROM v$database;
実際に打って練習する
Oracle DBA コースの Lv49「記録から診る AWR」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。
すべてのレベルが、プラチナ以上のプランで遊べます。