プライマリ・コンテンツに移動
Oracle® Database Testingガイド
12cリリース1 (12.1)
B71349-07
目次へ移動
目次
索引へ移動
索引

前
次

6.2.1 APIを使用したSQLパフォーマンスの分析

変更後のSQLのパフォーマンス・データが構築されたら、変更前バージョンと変更後バージョンのパフォーマンス・データを比較できます。DBMS_SQLPA.EXECUTE_ANALYSIS_TASKプロシージャまたはファンクションを使用して、比較分析を実行します。

変更前と変更後のSQLパフォーマンス・データを比較するには、次の手順を実行します。

  1. 次のパラメータを使用して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_timebuffer_getsdisk_readsdirect_writesoptimizer_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'));
    
  2. 次のパラメータを使用して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(デフォルト)、HTMLXMLおよびACTIVEです。

      アクティブ・レポートには、インタラクティブなユーザー・インタフェースを使用するきめ細かなレポート機能が用意されており、データベースやOracle Enterprise Managerに接続されていないときでも詳細な分析を実行できます。可能なかぎり、HTMLレポートやテキスト・レポートのかわりにアクティブ・レポートを使用することをお薦めします。

      アクティブ・レポートの詳細は、「SQLパフォーマンス・アナライザのアクティブ・レポートについて」を参照してください。

    • levelパラメータを設定して、推奨事項の形式を指定します。指定可能な値は、TYPICAL(デフォルト)、ALLBASICCHANGEDCHANGED_PLANSERRORSIMPROVEDREGRESSEDTIMEOUTUNCHANGEDUNCHANGED_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
    
  3. 「コマンドラインを使用したSQLパフォーマンス・アナライザ・レポートの確認」で説明されているSQLパフォーマンス・アナライザ・レポートを確認してください。

関連項目:

  • DBMS_SQLPA.EXECUTE_ANALYSIS_TASKおよびDBMS_SQLPA.REPORT_ANALYSIS_TASKファンクションについては、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。