13 取得およびリプレイ済ワークロードの分析
ノート:
リプレイの分析が完了したら、ワークロード・ディレクトリ・オブジェクトを別の物理的な場所にバックアップしてから、そのデータベースをワークロード取得時点の元の状態にリストアし、ワークロードのリプレイを繰り返して、システムに対する他の変更をテストすることができます。
ワークロードの取得レポートの使用
ワークロードの取得レポートには、取得されたワークロード統計、取得された上位セッション・アクティビティ、および取得プロセス中に使用されたすべてのワークロード・フィルタが含まれます。
次の項では、ワークロードの取得レポートの生成および使用方法について説明します。
Enterprise Managerを使用したワークロードの取得レポートへのアクセス
この項では、Oracle Enterprise Managerを使用してワークロードの取得レポートを生成する方法について説明します。
ワークロードの取得レポートを生成するための主ツールは、Oracle Enterprise Managerです。なんらかの理由でOracle Enterprise Managerが使用できない場合は、「APIを使用したワークロードの取得レポートの生成」で説明されているように、APIを使用してワークロードの取得レポートを生成できます。
Enterprise Managerを使用し、ワークロードの取得レポートにアクセスするには:
APIを使用したワークロードの取得レポートの生成
DBMS_WORKLOAD_CAPTURE
パッケージを使用してワークロードの取得レポートを生成できます。また、「Enterprise Managerを使用したワークロードの取得レポートへのアクセス」で説明されているように、Oracle Enterprise Managerを使用してワークロードの取得レポートを生成することも可能です。
最新のワークロードの取得レポートを生成するには:
-
DBMS_WORKLOAD_CAPTURE
.GET_CAPTURE_INFO
プロシージャを使用します。GET_CAPTURE_INFO
プロシージャは、ワークロードの取得に関するすべての情報を収集し、そのワークロードの取得に対応するcap_id
を戻します。このファンクションでは、必須パラメータdir
を使用します。このパラメータは、ワークロードの取得のディレクトリ・オブジェクト名を指定します。 -
DBMS_WORKLOAD_CAPTURE.REPORT
ファンクションをコールします。REPORT
ファンクションは、GET_CAPTURE_INFO
プロシージャによって戻されたcap_id
を使用してレポートを生成します。このファンクションでは、次のパラメータを使用します。-
capture_id
: レポートが生成されるワークロードの取得を含むディレクトリを指定する必須パラメータ。このディレクトリは、ワークロードの取得を含むホスト・システム内の有効なディレクトリである必要があります。このパラメータの値は、GET_CAPTURE_INFO
プロシージャによって戻されるcap_id
に一致する必要があります。 -
format
: レポートの形式を指定する必須パラメータ。有効値は、DBMS_WORKLOAD_CAPTURE
.TYPE_TEXT
およびDBMS_WORKLOAD_REPLAY
.TYPE_HTML
です。
-
この例では、GET_CAPTURE_INFO
プロシージャがjul14
ディレクトリ内のワークロードの取得に関するすべての情報を収集し、そのワークロードの取得に対応するcap_id
を戻します。次にREPORT
ファンクションは、GET_CAPTURE_INFO
プロシージャによって戻されたcap_id
を使用してテキスト・レポートを生成します。
DECLARE cap_id NUMBER; cap_rpt CLOB; BEGIN cap_id := DBMS_WORKLOAD_CAPTURE.GET_CAPTURE_INFO(dir => 'jul14'); cap_rpt := DBMS_WORKLOAD_CAPTURE.REPORT(capture_id => cap_id, format => DBMS_WORKLOAD_CAPTURE.TYPE_TEXT); END; /
関連項目:
-
ワークロードの取得レポートの解釈方法の詳細は、「ワークロードの取得レポートの確認」を参照してください
-
DBMS_WORKLOAD_CAPTURE
パッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください
ワークロードの取得レポートの確認
-
リプレイする実際のワークロードを表しているかどうか
-
除外するワークロードが含まれていないかどうか
-
リプレイできるかどうか
ワークロードの取得レポートに含まれる情報は、次のカテゴリに分類できます。
-
ワークロードの取得に関する詳細情報(ワークロードの取得の名前、定義済のフィルタ、日付、時刻、取得のSCNなど)
-
ワークロードの取得に関する全般的な統計(取得済の合計DB時間、取得済のログインとトランザクションの数など)と、合計システム・アクティビティに対する割合
-
取得されたワークロードのプロファイル
-
バージョン制限のために取得されなかったワークロードのプロファイル
-
定義済のフィルタによって除外された未取得のワークロードのプロファイル
-
バックグラウンド・プロセスまたはスケジュール済のジョブで構成された未取得のワークロードのプロファイル
ワークロードのリプレイ・レポートの使用
ワークロード・リプレイ・レポートには、取得システムとリプレイ・システム間のパフォーマンスの違いの測定に使用できる情報が含まれます。
次の項では、ワークロードのリプレイ・レポートの生成および確認方法について説明します。
Enterprise Managerを使用したワークロード・リプレイ・レポートへのアクセス
この項では、Oracle Enterprise Managerを使用してワークロードのリプレイ・レポートを生成する方法について説明します。
ワークロードのリプレイ・レポートを生成するための主ツールは、Oracle Enterprise Managerです。なんらかの理由でOracle Enterprise Managerが使用できない場合は、「APIを使用したワークロードのリプレイ・レポートの生成」で説明されているように、APIを使用してワークロードのリプレイ・レポートを生成できます
Enterprise Managerを使用したワークロード・リプレイ・レポートにアクセスするには:
APIを使用したワークロードのリプレイ・レポートの生成
DBMS_WORKLOAD_REPLAY
パッケージを使用してワークロードのリプレイ・レポートを生成できます。また、「Enterprise Managerを使用したワークロード・リプレイ・レポートへのアクセス」で説明されているように、Oracle Enterprise Managerを使用してワークロード・リプレイ・レポートを生成することも可能です。
APIを使用してワークロードの取得に対する最新のワークロードのリプレイ・レポートを生成するには:
-
「ワークロード・リプレイに関する情報の取得」で説明されているように、ワークロードの取得、および
DBMS_WORKLOAD_REPLAY
.GET_REPLAY_INFO
ファンクションをコールすることによる、リプレイ・ディレクトリ・オブジェクトからのワークロード・リプレイ試行の履歴に関する情報を取得します。GET_REPLAY_INFO
ファンクションは1つのキャプチャ・ディレクトリのcap_id
を戻します(統合キャプチャ・ディレクトリの場合、戻されるcap_id
は0です)。 -
GET_REPLAY_INFO
ファンクションにより戻されるcap_id
を使用して、問合せを実行し、ワークロードの最新のリプレイの適切なrep_id
を戻します。 -
DBMS_WORKLOAD_REPLAY.REPORT
ファンクションをコールします。REPORT
ファンクションは、SELECT
文によって戻されたrep_id
を使用してレポートを生成します。REPORT
ファンクションでは、次のパラメータを使用します。-
replay_id
: レポートが生成されるワークロードのリプレイを含むディレクトリを指定する必須パラメータ。このディレクトリは、ワークロードのリプレイを含むホスト・システム内の有効なディレクトリである必要があります。このパラメータの値は、前の問合せで戻されたrep_id
と一致する必要があります。 -
format
: レポートの形式を指定する必須パラメータ。有効な値は、DBMS_WORKLOAD_REPLAY
.TYPE_TEXT
、DBMS_WORKLOAD_REPLAY
.TYPE_HTML
およびDBMS_WORKLOAD_REPLAY
.TYPE_XML
です。
-
この例では、GET_REPLAY_INFO
ファンクションが、ワークロードの取得に関するすべての情報と、jul14
リプレイ・ディレクトリ・オブジェクトからのすべてのワークロード・リプレイ試行の履歴に関する情報を収集します。このファンクションは、DBA_WORKLOAD_REPLAYS
ビューのCAPTURE_ID
列に関連付けられて、取得した情報にアクセスできる、キャプチャ・ディレクトリのcap_id
を戻します。SELECT
文は最新のワークロードのリプレイの適切なrep_id
を戻します。次に、REPORT
ファンクションは、SELECT
文によって戻されたrep_id
を使用してHTMLレポートを生成します。
DECLARE cap_id NUMBER; rep_id NUMBER; rep_rpt CLOB; BEGIN cap_id := DBMS_WORKLOAD_REPLAY.GET_REPLAY_INFO(replay_dir => 'jul14'); /* Get the latest replay for that capture */ SELECT max(id) INTO rep_id FROM dba_workload_replays WHERE capture_id = cap_id; rep_rpt := DBMS_WORKLOAD_REPLAY.REPORT(replay_id => rep_id, format => DBMS_WORKLOAD_REPLAY.TYPE_HTML); END; /
関連項目:
-
ワークロードのリプレイ・レポートの解釈方法の詳細は、「ワークロードのリプレイ・レポートの確認」を参照してください
-
DBMS_WORKLOAD_REPLAY
パッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください
ワークロードのリプレイ・レポートの確認
パフォーマンスの相違は、データベースのパフォーマンス全体に影響を与える新しいアルゴリズムがリプレイ・システムに導入された場合に発生する可能性があります。たとえば、より新しいバージョンのOracle Databaseでワークロードがリプレイされると、新しいアルゴリズムによって特定のリクエストがより高速に実行される可能性があり、この高速の実行が相違として現れます。この場合は、望ましい相違です。
データの相違は、DMLまたはSQL問合せの結果が、ワークロードですでに取得された結果と一致しない場合に発生します。たとえば、リプレイ時にSQL文によって取得時より少ない数の行が戻されることがあります。
エラーの相違は、リプレイされたデータベース・コールで次のような状況が発生した場合に現れます。
-
取得されていない新しいエラーが発生した場合
-
取得されたエラーが発生しなかった場合
-
取得されたエラーとは異なるエラーが発生した場合
ワークロードのリプレイ・レポートに含まれる情報は、次のカテゴリに分類されます。
-
ワークロードのリプレイおよびワークロードの取得に関する詳細情報(ジョブ名、ステータス、データベース情報、各プロセスの継続時間と時刻、ディレクトリ・オブジェクト、ディレクトリ・パスなど)
-
ワークロードのリプレイに関して選択されたリプレイ・オプションおよび起動されたリプレイ・クライアントの数
-
ワークロードのリプレイおよびワークロードの取得に関する全般的な統計(取得済およびリプレイ済の合計DB時間、取得済およびリプレイ済のログインとトランザクションの数など)と、合計システム・アクティビティに対する割合
-
リプレイされたワークロードのプロファイル
-
リプレイの相違
-
エラーの相違
-
DMLおよびSQL問合せのデータの相違
Oracle Databaseリリース19c以降、ワークロード・リプレイ・レポートには、遅いワークロード・リプレイの診断に必要な情報が示されます。このワークロード・リプレイ・レポートに含まれる情報には、次の追加セクションがあります。
リプレイ・セッション
リプレイ・セッションのセクションには、進行中および完了済のリプレイ・セッションに関する統計情報(上位イベント、リプレイ速度が下位のセッション、リプレイ速度が上位のセッションなど)が含まれています。進行中のリプレイ・セッションに関連する統計情報は、リプレイが進行中の場合にのみ示されます。この情報を使用すると、進行中および完了済リプレイ・セッションの上位イベント、取得よりも遅いリプレイ・セッション、取得とリプレイのセッション経過時間の比較を確認できます。
同期化
ワークロードのリプレイ時には、取得したSQL文の実行順序が維持されます。リプレイ中にSQL文の実行の遅延またはブロックが発生すると、ワークロード・リプレイが遅くなります。
同期化のセクションには、同期化されたSQL文のいずれかの実行をブロックしているセッションに関する情報が示されます。この情報は、SQL文の実行がブロックされている場合にのみ表示されます。このセクションの情報を使用すると、ワークロードのリプレイがブロックされている理由やワークロードの取得よりも遅くなっている理由を確認できます。このセクションには、上位イベントと、同期されたSQL文を実行しているセッションに関連する上位イベントとともに上位のSQL文も示されます。
リプレイの期間比較レポートの使用
-
ワークロード・リプレイとそのワークロード取得
-
ワークロード・リプレイと、同じワークロード取得の別のリプレイ
-
複数のワークロード取得と統合リプレイ
次の項では、リプレイの期間比較レポートの生成および確認方法について説明します。
関連項目:
-
データベース統合リプレイの詳細は、「データベース統合リプレイの使用」を参照してください
APIを使用したリプレイの期間比較レポートの生成
DBMS_WORKLOAD_REPLAY
パッケージを使用して、リプレイの期間比較レポートを生成する方法について説明します。このレポートでは、データベース時間が5分以上のワークロード・リプレイのみを比較できます。
リプレイの期間比較レポートを生成するには、DBMS_WORKLOAD_REPLAY
.COMPARE_PERIOD_REPORT
プロシージャを使用します。
BEGIN DBMS_WORKLOAD_REPLAY.COMPARE_PERIOD_REPORT ( replay_id1 => 12, replay_id2 => 17, format => DBMS_WORKLOAD_CAPTURE.TYPE_HTML, result => :report_bind); END; /
この例のCOMPARE_PERIOD_REPORT
プロシージャは、リプレイID 12のワークロード・リプレイをID 17の別のリプレイと比較する、HTML形式のリプレイの期間比較レポートを生成します。
この例のCOMPARE_PERIOD_REPORT
プロシージャでは、次のパラメータを使用します。
-
replay_id1
: レポートの生成対象となる変更後のワークロード・リプレイの数値IDを指定するパラメータ。このパラメータは必須です。 -
replay_id2
: レポートの生成対象となる変更前のワークロード・リプレイの数値IDを指定するパラメータ。このパラメータを指定しない場合、ワークロードの取得との比較が実行されます。 -
format
: レポートの形式を指定するパラメータ。有効な値は、DBMS_WORKLOAD_CAPTURE
.TYPE_HTML
(HTMLの場合)と、DBMS_WORKLOAD_CAPTURE
.TYPE_XML
(XMLの場合)などです。このパラメータは必須です。 -
result: レポートの出力を指定するパラメータ。
関連項目:
-
リプレイの期間比較レポートの解釈方法の詳細は、「リプレイの期間比較レポートの確認」を参照してください
-
DBMS_WORKLOAD_REPLAY
パッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください
リプレイの期間比較レポートの確認
リプレイの期間比較レポートを確認することで、リプレイの相違が発生しているか、および大幅なパフォーマンスの変化があったかを判断できます。
行った比較の種類に応じて、次の3つのいずれかのリプレイの期間比較レポートが生成されます。
-
取得とリプレイ
このレポート・タイプでは、ワークロード・リプレイのパフォーマンスを取得済ワークロード比較します。
-
リプレイとリプレイ
このレポート・タイプでは、同一のワークロード取得の2つのワークロード・リプレイのパフォーマンスを比較します。
-
統合リプレイ
このレポート・タイプでは、複数のワークロード取得のパフォーマンスを統合リプレイと比較します。このレポート・タイプには、ASH Data Comparisonセクションしかありません。このレポート・タイプの詳細は、「データベース統合リプレイのレポート作成および分析」を参照してください。
どのタイプのリプレイの期間比較レポートにも、比較対象の2回の実行の最も重要な変更についての情報が含まれます。この情報を使用すると、実行する適切なアクションを決定できます。たとえば、新しい同時実行の問題が検出された場合、自動データベース診断モニター(ADDM)レポートを確認して問題を診断します。SQLのパフォーマンスに関する新しい問題が検出された場合、SQLチューニング・アドバイザを実行し問題を修正します。
リプレイの期間比較レポート内の情報は、次のセクションに分類できます。
一般情報
init.ora
パラメータの変更もここに示されます。テストしたシステムの変更が実行されたかどうか確認するには、このセクションを参照してください。
メイン・パフォーマンス統計
上位SQL/コール
ハードウェア使用率の比較
このセクションでは、2回の実行におけるCPUとI/O使用量を比較します。すべてのインスタンスのCPU数値が合計され、インスタンス間のCPUの使用量の平均が算出されます。
データ・ファイルおよび一時ファイルのI/O統計が示されます。1ブロックの読取り時間が高い値である場合(10ミリ秒を大幅に超える場合)、システムがI/Oバウンドであることが示唆されます。この場合、読み書きの合計時間を確認し、遅延の原因がI/Oリクエストが多いためまたはI/Oスループットが悪いためでないか判断します。
ADDMの比較
関連項目:
-
ADDM分析の詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください
ASHデータ比較
ASH Data Comparisonセクションには、次のサブセクションが含まれます。
関連項目:
-
ASHの詳細はOracle Databaseパフォーマンス・チューニング・ガイドを参照
長時間実行されているSQL
このセクションでは、2回の実行において実行時間が長い上位のSQL文を示します。長時間実行されるSQL文ごとに、最大、最小および平均応答時間などの問合せの詳細が記載されています。
SQLパフォーマンス・アナライザ・レポートの使用
SQLパフォーマンス・アナライザ・レポートは、ワークロード・リプレイのSQLチューニング・セットを、ワークロード取得の別のSQLチューニング・セットと、または2つのワークロード取得の2つのSQLチューニング・セットと比較する場合に使用します。
SQLパフォーマンス・アナライザのテスト実行では、各SQL試行のSQL文ごとに1つの実行計画のみを生成するのに対し、SQLチューニング・セットをデータベース・リプレイと比較すると、各SQL文のすべての実行計画が考慮されて示されるため、SQLパフォーマンス・アナライザのテスト実行よりも詳しい情報が得られます。
APIを使用したSQLパフォーマンス・アナライザ・レポートの生成
この項では、DBMS_WORKLOAD_REPLAY
パッケージを使用してSQLパフォーマンス・アナライザ・レポートを生成する方法について説明します。
SQLパフォーマンス・アナライザ・レポートを生成するには、DBMS_WORKLOAD_REPLAY
.COMPARE_SQLSET_REPORT
プロシージャを使用します。
BEGIN DBMS_WORKLOAD_REPLAY.COMPARE_SQLSET_REPORT ( replay_id1 => 12, replay_id2 => 17, format => DBMS_WORKLOAD_CAPTURE.TYPE_HTML, result => :report_bind); END; /
この例のCOMPARE_SQLSET_REPORT
プロシージャは、リプレイIDが12のワークロード・リプレイ時に取得されたSQLチューニング・セットを、リプレイIDが17のワークロード・リプレイ時に取得されたSQLチューニング・セットと比較する、HTML形式のSQLパフォーマンス・アナライザ・レポートを生成します。
この例のCOMPARE_SQLSET_REPORT
プロシージャでは、次のパラメータを使用します。
-
replay_id1
: レポートの生成対象となる変更後のワークロード・リプレイの数値IDを指定するパラメータ。このパラメータは必須です。 -
replay_id2
: レポートの生成対象となる変更後のワークロード・リプレイの数値IDを指定するパラメータ。このパラメータを指定しない場合、ワークロードの取得との比較が実行されます。 -
format
: レポートの形式を指定するパラメータ。有効な値は、DBMS_WORKLOAD_CAPTURE
.TYPE_HTML
(HTMLの場合)、DBMS_WORKLOAD_CAPTURE
.TYPE_XML
(XMLの場合)およびDBMS_WORKLOAD_CAPTURE
.TYPE_TEXT
(テキストの場合)です。このパラメータは必須です。 -
result: レポートの出力を指定するパラメータ。
関連項目:
-
SQLパフォーマンス・アナライザ・レポートの解釈方法の詳細は、「コマンドラインを使用したSQLパフォーマンス・アナライザ・レポートの確認」を参照してください
-
DBMS_WORKLOAD_REPLAY
パッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください