Oracle AWR (Automatic Workload Repository) は、Oracle Database Enterprise Edition (EE) におけるパフォーマンス分析のデファクトスタンダードです。 Statspack の後継としてカーネルレベルで統合されており、より詳細かつ低負荷に稼働統計を自動収集します。
本記事では、Oracle Database 26ai 環境を対象に、AWRレポートの取得手順、設定変更方法、そして Statspack との決定的な違い(ライセンス要件)について解説します。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
結論:AWR は「自動収集・手動出力」
先に結論と要点をまとめます。
- 最大の特徴:デフォルトで有効(60分間隔で自動収集)。設定不要ですぐ使える。
- 必須条件:本番利用には Enterprise Edition かつ Diagnostics Pack (有償オプション) が必須。
- 最短手順(レポート出力):
- SQL*Plus で
@?/rdbms/admin/awrrptを実行。 - 対象の日数・スナップショットIDを選択。
- 出力形式(HTML推奨)とファイル名を決定。
- SQL*Plus で
「性能トラブルが起きた!レポート出して!」と言われたら、まずはこの記事の手順を実行してください。
AWR とは? Statspack との違い
AWR (Automatic Workload Repository) の概要
Oracle Database 10g で登場した自動ワークロード・リポジトリです。DBの稼働統計(待機イベント、SQL統計、OS統計など)を SYSAUX 表領域に自動的に蓄積します。
Statspack との比較表
| 項目 | AWR (Automatic Workload Repository) | Statspack |
|---|---|---|
| 対象エディション | Enterprise Edition (要オプション) | Standard Edition / EE / Free |
| ライセンス | Diagnostics Pack が必須 | 追加費用なし |
| データ収集 | デフォルトで自動 (60分間隔) | 手動設定が必要 (JOB登録) |
| データ精度 | 非常に高い (ASHなど詳細情報あり) | 標準的 |
| インターフェース | HTMLレポート / EM Cloud Control | テキストレポートのみ |
プロの注意点(ライセンス) AWR は非常に強力ですが、Diagnostics Pack のライセンスを購入していない環境で使用するとライセンス違反になります。
control_management_pack_accessパラメータで使用を制御できます。Standard Edition (SE2) 環境では原則 Statspack を使用してください。 ※ Oracle Database 26ai Free などの開発者ライセンス版では、学習・開発目的での使用が許可されています。
手順1:AWR の設定確認と変更
AWR はデフォルトで有効ですが、現場によっては間隔や保存期間が変更されている場合があります。 マルチテナント環境では CDB_HIST_WR_CONTROL ビューを使用することで、各コンテナの設定状況を確認できます。
現在の設定を確認する
CDB_HIST_WR_CONTROL ビューを確認します。
COL snap_interval FORMAT a20
COL retention FORMAT a25
SELECT dbid, con_id, snap_interval, retention, topnsql
FROM cdb_hist_wr_control;
- SNAP_INTERVAL: スナップショットの取得間隔(デフォルト:
+00 01:00:00.000000= 1時間) - RETENTION: データの保存期間(デフォルト:
+00 08:00:00.000000= 8日間)
SQL> COL snap_interval FORMAT a20
SQL> COL retention FORMAT a25
SQL> SELECT dbid, snap_interval, retention, topnsql
2 FROM dba_hist_wr_control;
DBID SNAP_INTERVAL RETENTION TOPNSQL
---------- -------------------- ------------------------- ----------
1491844267 +00000 01:00:00.0 +00008 00:00:00.0 DEFAULT
設定を変更する(例:15分間隔、30日保存)
トラブルシューティング時は間隔を短くすることがあります。変更には DBMS_WORKLOAD_REPOSITORY パッケージを使用します。
BEGIN
DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
retention => 43200, -- 分単位 (30日 = 30 * 24 * 60 = 43200)
interval => 15 -- 分単位 (15分)
);
END;
/
SQL> BEGIN
2 DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
3 retention => 43200,
4 interval => 15
5 );
6 END;
7 /
PL/SQL procedure successfully completed.
SQL> COL snap_interval FORMAT a20
SQL> COL retention FORMAT a25
SQL> SELECT dbid, con_id, snap_interval, retention, topnsql
2 FROM cdb_hist_wr_control;
DBID CON_ID SNAP_INTERVAL RETENTION TOPNSQL
---------- ---------- -------------------- ------------------------- ----------
1266666428 3 +00000 00:15:00.0 +00030 00:00:00.0 DEFAULT
取得済みスナップショットの確認
AWR が正常に稼働しているか、あるいはレポート出力対象の ID を事前に確認するための SQL です。
-- スナップショットを表示
SELECT snap_id, begin_interval_time, end_interval_time
FROM dba_hist_snapshot
ORDER BY snap_id;
SQL> SELECT snap_id, begin_interval_time, end_interval_time
2 FROM dba_hist_snapshot
3 ORDER BY snap_id;
SNAP_ID BEGIN_INTERVAL_TIME END_INTERVAL_TIME
---------- ----------------------------------- -----------------------------------
3 20-JAN-26 09.58.40.750 PM 20-JAN-26 10.58.50.765 PM
4 20-JAN-26 10.58.50.765 PM 20-JAN-26 11.58.55.371 PM
5 20-JAN-26 11.58.55.371 PM 21-JAN-26 12.58.59.753 AM
6 21-JAN-26 12.58.59.753 AM 21-JAN-26 01.58.11.061 AM
7 21-JAN-26 01.58.11.061 AM 21-JAN-26 02.58.16.354 AM
8 21-JAN-26 02.58.16.354 AM 21-JAN-26 03.58.20.947 AM
9 21-JAN-26 03.58.20.947 AM 21-JAN-26 04.58.25.506 AM
10 21-JAN-26 04.58.25.506 AM 21-JAN-26 05.58.30.321 AM
11 21-JAN-26 05.58.30.321 AM 21-JAN-26 06.58.35.341 AM
12 21-JAN-26 06.58.35.341 AM 21-JAN-26 07.58.39.816 AM
13 21-JAN-26 07.58.39.816 AM 21-JAN-26 08.58.44.294 AM
14 21-JAN-26 08.58.44.294 AM 21-JAN-26 09.58.48.911 AM
15 21-JAN-26 09.58.48.911 AM 21-JAN-26 10.58.53.551 AM
16 21-JAN-26 10.58.53.551 AM 21-JAN-26 11.58.57.940 AM
17 21-JAN-26 11.58.57.940 AM 21-JAN-26 12.58.02.504 PM
18 21-JAN-26 12.58.02.504 PM 21-JAN-26 01.58.07.398 PM
19 21-JAN-26 01.58.07.398 PM 21-JAN-26 02.58.12.112 PM
20 21-JAN-26 02.58.12.112 PM 21-JAN-26 03.58.16.939 PM
21 21-JAN-26 03.58.16.939 PM 21-JAN-26 04.58.21.754 PM
22 21-JAN-26 04.58.21.754 PM 21-JAN-26 05.58.26.436 PM
23 21-JAN-26 05.58.26.436 PM 21-JAN-26 06.58.31.129 PM
24 21-JAN-26 06.58.31.129 PM 21-JAN-26 07.58.35.578 PM
25 21-JAN-26 07.58.35.578 PM 21-JAN-26 08.58.39.987 PM
23 rows selected.
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
手順2:AWRレポートの作成 (awrrpt.sql)
最も頻繁に行う操作です。SQL*Plus で対話形式のスクリプトを実行します。
1. スクリプトの実行
分析対象のデータベース(CDB環境の場合は対象のPDB)に SYS または DBA 権限ユーザーで接続し、スクリプトを叩きます。
-- PDBのレポートを出したい場合はPDBに接続してから実行
CONN / AS SYSDBA
ALTER SESSION SET CONTAINER = FREEPDB1;
-- HTML形式で見やすく出力するために設定
SET PAGES 0 LINES 200
-- レポート作成スクリプト実行
@?/rdbms/admin/awrrpt
2. 対話形式での入力
実行すると、以下の順で入力を求められます。
- report_type: レポート形式。
htmlまたはtextを選択可能です。ブラウザで閲覧でき、色分けされて見やすいhtmlをおすすめします。 - num_days: 表示するスナップショットの日数。直近なら
1、3日前なら3を入力。 - begin_snap: 調査開始時点の Snap Id をリストから選んで入力。
- end_snap: 調査終了時点の Snap Id を入力。
- report_name: 出力ファイル名。デフォルトでよければ Enter(例:
awrrpt_1_100_101.html)。
3. レポートの確認
カレントディレクトリに HTML ファイルが生成されます。ブラウザで開くと、色付きのグラフィカルなレポートが表示されます。
ポイント: 「Top 10 Foreground Events by Total Wait Time」セクションが最重要です。DB が何に時間を使っていたかが一目で分かります。

マルチテナント (CDB/PDB) 環境での AWR
Oracle 12c 以降、AWR は CDB レベルと PDB レベルの両方で動作します。
- CDB全体 (CDB$ROOT): インスタンス全体の負荷を見る場合に使用。
awrrpt.sqlをルートコンテナで実行。 - 個別PDB: 特定のテナントの負荷を見る場合に使用。26ai 環境では、PDB 単位のスナップショットもデフォルトで自動取得されます。
PDB 単位の AWR レポートを出力する場合は、必ず対象の PDB に ALTER SESSION SET CONTAINER で切り替えてから awrrpt.sql を実行してください。
トラブルシューティング:よくあるエラーと対処
Q. スナップショットが自動生成されていない
原因: STATISTICS_LEVEL パラメータが TYPICAL (デフォルト) または ALL になっていない可能性があります。 確認:
SHOW PARAMETER statistics_level
-- BASIC になっているとAWRは停止します
Q. SYSAUX 表領域が肥大化した
原因: AWR の保存期間 (RETENTION) が長すぎる、または SQL 統計量が多すぎることが原因です。 対処: 保存期間を短くする(例:8日に戻す)か、手動で古いスナップショットをパージします。
-- 設定をデフォルト(保存期間8日、間隔60分)に戻す場合
BEGIN
DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
retention => 11520, -- 8日 (分単位: 8*24*60)
interval => 60 -- 60分
);
END;
/
-- 手動パージ例 (ID: 100〜110 を削除)
BEGIN
DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(
low_snap_id => 100,
high_snap_id => 110
);
END;
/
Q. “ORA-13516: AWR Operation failed: CATWRUP not run”
原因: データベースのアップグレード後などに、AWR 用の内部スキーマが更新されていない場合に発生します。 対処: catupgrd.sql 等によるアップグレード処理が正常完了しているか確認が必要です。
よくある質問 (FAQ)
Q. AWRのデータ容量を確認するには?
SYSAUX 表領域内の AWR 関連オブジェクトのサイズを確認します。以下のSQLで概算を把握できます。
SELECT OCCUPANT_NAME, SPACE_USAGE_KBYTES/1024 AS MB
FROM V$SYSAUX_OCCUPANTS
WHERE OCCUPANT_NAME LIKE 'SM%';
Q. 特定のSQLの履歴だけ詳細に見たい場合は?
通常の AWR レポート (awrrpt.sql) ではなく、SQL 詳細レポート (awrsqrpt.sql) を使用してください。SQL ID を指定することで、その SQL の実行計画の推移や統計情報を詳細に出力できます。
Q. AWRの取得負荷はどのくらいですか?
AWR は Oracle Database のカーネル内部から直接メモリ上の統計情報を読み取るため、Statspack (SQLベースでの取得) と比較して非常に低負荷です。通常運用において AWR の取得処理がボトルネックになることは稀です。
まとめ
- AWR は Enterprise Edition + Diagnostics Pack が必須。ライセンス違反に厳重注意。
- デフォルトで有効。設定変更なしで過去のデータを確認できるのが Statspack に対する強み。
- レポート出力は
@?/rdbms/admin/awrrptさえ覚えておけばOK。 - マルチテナント環境では、CDB 全体 と PDB 個別 の使い分けを意識する。
Statspack と AWR、それぞれの特性とライセンス要件を理解し、環境に合わせて最適なツールを選択してください。
[参考]
Oracle AI Databaseパフォーマンス・チューニング・スタート・ガイド, 26ai
本記事は Oracle Database 26ai を対象に解説します。本記事の実機確認は26ai Free版で行っているため、正式版(Enterprise Edition等)がリリースされた際には仕様や既定値が若干異なる可能性があります。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?



コメント