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」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。

すべてのレベルが、プラチナ以上のプランで遊べます。

Oracle Database の管理コマンド一覧(DBA)へ戻る