アプリケーションの自動ワークロード・リポジトリの使用

アプリケーション固有のAWRは、特に複雑なマルチアプリケーション環境における、Oracleパフォーマンス管理の変革的な機能です。これは、パフォーマンスを目標としているためです。

アプリケーション固有のAWR (自動ワークロード・リポジトリ)は、個々のアプリケーションにスコープ指定されたパフォーマンス・データを取得および分析します。グローバルAWRレポートを移行するかわりに、アプリケーションごとにパフォーマンスの問題を特定し、根本原因の分析およびチューニング作業を改善できます。また、アプリケーション・レベルの高使用SQL文は、データベース全体の上位SQL間でランク付けされない場合、標準のAWRレポートに表示されない場合があります。

AWRには、指定したアプリケーションのパフォーマンス・トラッキング用のスナップショットがあります。これには、次のものが含まれます:

  • 指定したアプリケーションの上位SQL
  • 時間モデル統計
  • 待機イベント
  • ロード・プロファイル

アプリケーション・レベルの高使用SQL文は、データベース全体の上位SQL間でランク付けされない場合、標準のAWRレポートに表示されない場合があります。したがって、アプリケーション固有のAWRレポートの生成は、次の場合に特に役立ちます:

  • アプリケーションの正確な上位SQL統計により、問題をより迅速に検出して解決する場合
  • コンテキストに富んだ共有パフォーマンス・データによってコラボレーションを強化する場合
  • ベースラインを使用して、変更を検証し、上位SQLパフォーマンスを継続的に監視する場合
  • アプリケーションごとの正確なリソース属性によってレポートとコスト追跡をサポートする場合

アプリケーション固有のAWRレポートを生成するようにデータベースを設定するには、次のステップに従います:

ステップ1: アプリケーション固有のAWRスナップショットの有効化

ENABLE_AWRAPP_SNAPSHOTプロシージャは、AWRスナップショット内のアプリケーション固有データの収集を有効にします。これは、適切な権限(通常はDBA)を持つユーザーが実行する必要があります。

begin 
DBMS_WORKLOAD_REPOSITORY.ENABLE_AWRAPP_SNAPSHOT;
end; 
/

このステップは、アプリケーションごとに1回のみ実行する必要があります。

ステップ2: 追跡するアプリケーションの指定

機能を有効にした後、指定した表または構成に名前を挿入して、追跡するアプリケーションを定義します。DBMS_AWRAPP_ADMIN.CREATE_APPMAPプロシージャを使用して、アプリケーション識別子を定義し、それを特定のアプリケーション・プログラムに関連付けます。アプリケーション識別子は、関連するプログラムの論理グループとして機能します。このステップにより、AWRは指定されたアプリケーションのデータのみを収集します。

/* define MY_APPMAP_1 with module like '%payroll%', action like '%payroll%', client_info like '%payroll%', and client_identifier like '%payroll%'. */
begin
   DBMS_AWRAPP_ADMIN.CREATE_APPMAP(
        appmap_name           =>  'MY_APPMAP_1' ,
        module_pat            =>  '%payroll%' ,
        action_pat            =>  '%payroll%' ,
        client_info_pat       =>  '%payroll%' ,
        client_identifier_pat =>  '%payroll%' );
end;
/

ステップ3: アプリケーションの追跡の開始

指定したAPPMAPのアプリケーション・パフォーマンスの追跡を開始するには、DBMS_WORKLOAD_REPOSITORY.INCLUDE_APPMAPを使用します。この手順により、AWRがアプリケーションのパフォーマンス・データの収集を開始し、データが通常のシステム全体のAWRスナップショットに含まれます。

begin
   DBMS_WORKLOAD_REPOSITORY.INCLUDE_APPMAP(APPMAP_NAME =>  'MY_APPMAP_1' );
   DBMS_WORKLOAD_REPOSITORY.INCLUDE_APPMAP(APPMAP_NAME =>  'MY_APPMAP_2' );
end;
/

このステップは、アプリケーションごとに1回のみ実行する必要があります。

アプリケーションを追跡した後、アプリケーション固有のAWRレポートを生成します。ステップ4で使用するAWRスナップショットは、ステップ1から3の完了後に収集する必要があります。

ステップ4: AWRスナップショットの取得

AWRスナップショットは、DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOTによって手動で取得するか、データベース・バックグラウンド・プロセスによるスナップショットの作成を待機して自動的に取得します。このステップは、ユーザーが要求した回数だけ実行できます。

AWRスナップショットが指定したアプリケーションの追跡を開始すると、後で作成されるすべてのスナップショットに、アプリケーションに固有のパフォーマンス・データが含まれます。

ステップ4: レポートの生成

AWRアプリケーション・レポートは、DBMS_AWRAPP.GENERATE_AWRAPP_REPORTを使用して生成されます。

spool awr_application_report.html
select dbms_awrapp.generate_awrapp_report(2171, 4, 5, '1', 'html') from dual;
spool off

ステップ5: レポートの分析

レポートには、選択した時間間隔で収集されたアプリケーション固有のSQLパフォーマンス・データが取得されます。

次のデータ・ディクショナリ・ビューを使用して、アプリケーション・スナップショットのパフォーマンス・データを取得できます:

  • DBA_AWRAPP_APPMAP_CONTROL - ワークロード・リポジトリの制御情報(アプリケーション・パフォーマンス追跡ステータス)を表示します。
  • DBA_AWRAPP_APPMAP_DEF - データベース内のすべてのアプリケーション・マップに関する情報を表示します。
  • DBA_AWRAPP_INFO (またはAWR_PDB_AWRAPP_INFO) - AWRアプリケーション・スナップショットとワークロード・リポジトリ内のそのアプリケーション・マップ間のマッピングを表示します。
  • DBA_AWRAPP_SQLSTAT (またはAWR_PDB_AWRAPP_SQLSTAT) - ワークロード・リポジトリで取得されたアプリケーションに固有のSQL統計に関する情報を表示します。
  • DBMS_AWRAPP_ADMIN.DROP_AWRAPP - 指定したAPPMAP定義をデータベースから削除します
  • DBMS_WORKLOAD_REPOSITORY.EXCLUDE_APPMAP - AWR内の指定されたアプリケーションのパフォーマンス追跡を停止します。