AWR(Automatic Workload Repository)の各種設定方法を紹介します。
AWRとはOracle Databaseの稼働統計とワークロード情報のスナップショットを自動的に収集・管理する機能です。
この記事ではスナップショットの取得間隔・保存期間や取得レベル、またAWRの有効化・無効化方法を紹介します。
なおAWR利用には「Diagnostic Pack」のライセンスが追加で必要になります。
AWRの有効化・無効化設定:CONTROL_MANAGEMENT_PACK_ACCESS
AWRを使用するためには、「Diagnostics Pack」ライセンスが必要になります。
「Diagnostics Pack」ライセンスを制御している初期化パラメータは「CONTROL_MANAGEMENT_PACK_ACCESS」です。
「CONTROL_MANAGEMENT_PACK_ACCESS」を変更することで有効・無効を制御しますが、
このパラメータは「Turning Pack」ライセンスと共存して使用する点に注意してください。
Enterprise EditionのデータベースではAWRは有効化されていますが、
稀に意識してAWRの機能を無効化しているデータベースがあります。
- 「Diagnostics Pack」ライセンスと「Turning Pack」ライセンスを有効化するSQLです。
alter system set CONTROL_MANAGEMENT_PACK_ACCESS = DIAGNOSTIC+TUNING scope = SPFILE;
- 「Diagnostics Pack」ライセンスを有効化するSQLです。
alter system set CONTROL_MANAGEMENT_PACK_ACCESS = DIAGNOSTIC scope = SPFILE;
- 「Diagnostics Pack」ライセンスを無効化するSQLです。
alter system set CONTROL_MANAGEMENT_PACK_ACCESS = NONE scope = SPFILE;
上記のSQL実行後にデータベースの再起動を忘れずに行いましょう。
※ Diagnostics Packを使用していないとAWR、Turing Packを使用しないとSQLアドバイザーなどは使用できません。
有効化されているだけではライセンス料は発生しないはずです。。。
統計情報の取得レベルを変更:STATISTICS_LEVEL
AWRで取得される統計情報を取得レベルを制御するのは「STATISTICS_LEVEL」になります。
以下設定値とその意味になります。
設置値 | 説明 |
---|---|
TYPICAL | データベースの自動管理機能で必要とされる主要統計が収集。 |
BASIC | TYPICALから以下の項目が取得されなくなる ・自動ワークロード・リポジトリ(AWR)・スナップショット ・自動データベース診断モニター(ADDM) ・サーバー生成の全アラート ・自動SGAメモリー管理 ・自動オプティマイザ統計収集 ・オブジェクト・レベルの統計 ・エンドツーエンドのアプリケーション・トレース(V$CLIENT_STATS) ・データベースの時間配分統計(V$SESS_TIME_MODELおよびV$SYS_TIME_MODEL) ・サービス・レベルの統計 ・バッファ・キャッシュ・アドバイザ ・MTTRアドバイザ ・共有プール・サイジング・アドバイザ ・セグメント・レベルの統計 ・PGAターゲット・アドバイザ ・時刻に関連する統計 ・統計の監視 |
ALL | TYPICALに追加で以下の項目が取得される ・時刻に関連する統計 ・時刻に関連するオペレーティング・システム統計 ・計画実行統計 |
基本的にはデフォルトの「TYPICAL」を設定すれば十分な情報を取得できます。
以下が設定SQLになります。
alter system set STATISTICS_LEVEL = TYPICAL scope = BOTH;
スナップショットの取得間隔と保存期間を設定:DBMS_WORKLOAD_REPOSITORY
AWRに取得間隔と保存期間を設定するには、「DBMS_WORKLOAD_REPOSITORY」プロシージャを使用します。
以下がプロシージャの使用方法です。
begin
DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
interval => <取得間隔を分で指定>,
retention => <保存期間を分で指定>;
end;
/
- 「interval」は取得間隔を指定
- 「retention」は保存期間を指定
どちらもの整数で指定し単位は”分”で指定します。下が取得期間を「30分」、保存期間を「30日(60×24時間×30日 = 43200分)」に設定した例です。
begin
DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
interval => 30,
retention => 43200);
end;
/
また以下が設定確認のSQLになります。
select DBID,
SNAP_INTERVAL,
RETENTION
from DBA_HIST_WR_CONTROL;
以下が出力例です。
DBID SNAP_INTERVAL RETENTION
-------------- --------------------- ---------------------------------------------------------------------------
1469414445 +00000 00:30:00.0 +00030 00:00:00.0
「SNAP_INTERVAL」、「RETENTION」の左側が日数で右側が時間です。
※ 保存期間を無期限にする場合にはマニュアル”0”にするとなっていますが、
うまく動作しませんでしたので、最大値の100年の「150000」を設定することをオススメします。