変更後のSQLのパフォーマンス・データが構築されたら、変更前バージョンと変更後バージョンのパフォーマンス・データを比較できます。DBMS_SQLPA.EXECUTE_ANALYSIS_TASK
プロシージャまたはファンクションを使用して、比較分析を実行します。
変更前と変更後のSQLパフォーマンス・データを比較するには、次の手順を実行します。
次のパラメータを使用してEXECUTE_ANALYSIS_TASK
プロシージャまたはファンクションをコールします。
task_name
パラメータをSQLパフォーマンス・アナライザのタスクの名前に設定します。
execution_type
パラメータをCOMPARE PERFORMANCE
に設定します。この設定によって、2つのバージョンのSQLパフォーマンス・データが分析および比較されます。
execution_name
パラメータを使用して、実行を識別するための名前を指定します。指定しない場合は、SQLパフォーマンス・アナライザによって名前が生成され、ファンクションによって戻されます。
execution_params
パラメータを使用して、2つのバージョンのSQLパフォーマンス・データを指定します。execution_params
パラメータは、指定した実行の名前/値ペアとして指定されます。SQLパフォーマンス・データの比較および分析に関連する実行パラメータを次のように設定します。
execution_name1
パラメータを最初の実行(システム変更が実行される前)の名前に設定します。この値は、「APIを使用した変更前のSQL試行の作成」で指定されているexecution_name
パラメータの値に対応している必要があります。
execution_name2
パラメータを2番目の実行(システム変更が実行された後)の名前に設定します。システム変更後にSQLワークロードを実行した場合、この値は、「APIを使用した変更後のSQL試行の作成」で指定されているexecution_name
パラメータの値に対応している必要があります。コール元が実行を指定しなかった場合、SQLパフォーマンス・アナライザではデフォルトで最後の2回のタスク実行が常に比較されます。
comparison_metric
パラメータを設定して、パフォーマンスに対する影響の分析に使用する実行統計の式を指定します。指定可能な値は、elapsed_time
(デフォルト)、cpu_time
、buffer_gets
、disk_reads
、direct_writes
、optimizer_cost
およびio_interconnect_bytes
の各メトリックまたはこれらの組合せです。
比較用に設定可能なその他のパラメータについては、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』のDBMS_SQLPA
パッケージに関する項を参照してください。
次の例は、ファンクション・コールを示しています。
EXEC DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(task_name => 'my_spa_task', - execution_type => 'COMPARE PERFORMANCE', - execution_name => 'my_exec_compare', - execution_params => dbms_advisor.arglist(- 'comparison_metric', 'buffer_gets'));
次のパラメータを使用してREPORT_ANALYSIS_TASK
ファンクションをコールします。
task_name
パラメータをSQLパフォーマンス・アナライザのタスクの名前に設定します。
execution_name
パラメータを、使用する実行の名前に設定します。この値は、レポートの生成対象となる実行のexecution_name
パラメータと一致している必要があります。
レポートを生成して結果を表示するには、次の操作を実行します。
SQLワークロードに対して生成された実行計画の場合は、目的のEXPLAIN PLAN
実行のexecution_name
パラメータと一致するようにこの値を設定します。
SQLワークロードに対して生成された実行計画および実行統計の場合は、目的のTEST EXECUTE
実行で使用されたexecution_name
パラメータの値と一致するようにこのパラメータを設定します。
比較分析の場合は、目的のANALYZE PERFORMANCE
実行のexecution_name
パラメータと一致するようにこの値を設定します。
指定しなかった場合、SQLパフォーマンス・アナライザによって最後の実行に関するレポートが生成されます。
type
パラメータを設定して、生成するレポートのタイプを指定します。指定可能な値は、TEXT
(デフォルト)、HTML
、XML
およびACTIVE
です。
アクティブ・レポートには、インタラクティブなユーザー・インタフェースを使用するきめ細かなレポート機能が用意されており、データベースやOracle Enterprise Managerに接続されていないときでも詳細な分析を実行できます。可能なかぎり、HTMLレポートやテキスト・レポートのかわりにアクティブ・レポートを使用することをお薦めします。
アクティブ・レポートの詳細は、「SQLパフォーマンス・アナライザのアクティブ・レポートについて」を参照してください。
level
パラメータを設定して、推奨事項の形式を指定します。指定可能な値は、TYPICAL
(デフォルト)、ALL
、BASIC
、CHANGED
、CHANGED_PLANS
、ERRORS
、IMPROVED
、REGRESSED
、TIMEOUT
、UNCHANGED
、UNCHANGED_PLANS
およびUNSUPPORTED
です。
section
パラメータを設定して、レポートに生成する特定のセクションを指定します。指定可能な値は、SUMMARY
(デフォルト)およびALL
です。
top_sql
パラメータを設定して、レポートに生成するSQLチューニング・セット内のSQL文の数を指定します。デフォルトでは、システム変更によって影響を受ける上位100のSQL文がレポートに示されます。
アクティブ・レポートを生成するには、次のスクリプトを実行します。
set trimspool on set trim on set pages 0 set linesize 1000 set long 1000000 set longchunksize 1000000 spool spa_active.html SELECT DBMS_SQLPA.REPORT_ANALYSIS_TASK(task_name => 'my_spa_task', type => 'active', section => 'all') FROM dual; spool off
次に、比較サマリー・レポートをテキスト形式で作成し表示するためのSQLスクリプトの例の一部を示します。
VAR rep CLOB; EXEC :rep := DBMS_SQLPA.REPORT_ANALYSIS_TASK('my_spa_task', - 'text', 'typical', 'summary'); SET LONG 100000 LONGCHUNKSIZE 100000 LINESIZE 130 PRINT :rep
「コマンドラインを使用したSQLパフォーマンス・アナライザ・レポートの確認」で説明されているSQLパフォーマンス・アナライザ・レポートを確認してください。
関連項目:
DBMS_SQLPA.EXECUTE_ANALYSIS_TASK
およびDBMS_SQLPA.REPORT_ANALYSIS_TASK
ファンクションについては、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。