ヘッダーをスキップ
Oracle® Database Real Application Testingユーザーズ・ガイド
11gリリース2(11.2)
B56321-06
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

4 変更前のSQL試行の作成

SQLパフォーマンス・アナライザのタスクを作成し、入力ソースとしてSQLチューニング・セットを選択したら、テスト・システムの初期環境を設定する必要があります。テスト・システムのデータベース環境を設定するには、SQLの最適化およびパフォーマンスに影響する必要な環境変更を手動で行う必要があります。これらの変更には、初期化パラメータの変更、オプティマイザ統計の収集または設定、索引の作成などがあります。可能なかぎり本番システムと同様にテスト・システムを構築することをお薦めします。Enterprise Managerの専用ワークフローでは、両方のSQL試行が自動作成され、テスト・セッションに限定された変更が行われるため、このプロセスが簡単になっています。データベース環境の設定の詳細は、「テスト・システムの設定」を参照してください。


注意:

SQL試行は、パブリック・データベース・リンクにアクセスすることで、リモート・システム上で実行することもできます。リモートのSQL試行を実行する場合は、SQL文が実行されるリモート・データベースのデータベース・バージョンが、その接続先のデータベースのデータベース・バージョン以下であることが必要です。Oracle Databaseリリース11.2.0.2以上では、Oracle Active Data Guardインスタンスなどの読取り専用データベースをリモート・データベースとして指定できます。

テスト・システムの環境が適切に構成されたら、変更前のバージョンのパフォーマンス・データを構築した後で、システム変更を実行できます。次のいずれかの方法で、SQLパフォーマンス・アナライザを使用してSQL試行を作成できます。

詳細は、「変更前のSQLパフォーマンス・アナライザの測定」を参照してください。

この章では、変更前のSQL試行の作成方法について説明します。内容は次のとおりです。


注意:

変更前のSQL試行を作成するための主要なインタフェースは、Oracle Enterprise Managerです。なんらかの理由でOracle Enterprise Managerを使用できない場合は、DBMS_SQLPA PL/SQLパッケージを使用して変更前のSQL試行を作成できます。


ヒント:

変更前のSQL試行を作成する前に、SQLパフォーマンス・アナライザのタスクを作成する必要があります。詳細は、第3章「分析タスクの作成」を参照してください。

4.1 Enterprise Managerを使用した変更前のSQL試行の作成

この項では、Oracle Enterprise Managerを使用して変更前のSQLパフォーマンス・データを収集する方法について説明します。

Enterprise Managerを使用して変更前のSQL試行を作成するには、次の手順を実行します。

  1. 「ガイド付きワークフロー」ページで、「初期環境へのSQL試行の作成」手順の「実行」アイコンをクリックします。

    「SQL試行の作成」ページが表示されます。選択したSQLチューニング・セットのサマリー(SQLワークロードを含む)が表示されます。

    spa_create_trial.gifの説明が続きます。
    spa_create_trial.gifの説明

  2. 「SQL試行名」フィールドに、SQL試行の名前を入力します。

  3. 「SQL試行の説明」フィールドに、SQL試行の説明を入力します。

  4. 「作成方法」リストで、次のいずれかのアクションを実行して、SQL試行の作成方法および生成されるコンテンツを確認します。

    • 「SQLをローカルで実行」を選択します。

      このSQL試行では、実際にテスト・システムでSQL文をローカルに実行することによって、SQLチューニング・セット内の各SQL文に対して実行計画と実行統計の両方が生成されます。

    • 「SQLをリモートで実行」を選択します。

      このSQL試行では、実際にパブリック・データベース・リンクを介して別のテスト・システムでSQL文をリモートに実行することによって、SQLチューニング・セット内の各SQL文に対して実行計画と実行統計の両方が生成されます。

    • 「計画をローカルで実行」を選択します。

      このSQL試行では、バインド値およびオプティマイザの構成が考慮された後に、オプティマイザが起動されて、テスト・システムにローカルに実行計画が作成されます。実際にSQL文が実行されることはありません。

    • 「計画をリモートで実行」を選択します。

      このSQL試行では、バインド値およびオプティマイザの構成が考慮された後に、オプティマイザが起動されて、パブリック・データベース・リンクを介してリモートで別のテスト・システムに実行計画が作成されます。実際にSQL文が実行されることはありません。

    • 「SQLチューニング・セットから作成」を選択します。

      このSQL試行では、直接SQLチューニング・セットから試行に実行計画および実行統計がコピーされます。

    これらの各種の方法の詳細は、「変更前のSQLパフォーマンスの測定」を参照してください。

  5. 「SQL当たりの時間制限」リストで、次のいずれかのアクションを実行して、試行時のSQL実行の時間制限を決定します。

    • 「5分」を選択します。

      この実行では、SQLチューニング・セット内の各SQL文が最大5分間実行され、パフォーマンス・データが収集されます。

    • 「無制限」を選択します。

      この実行では、SQLチューニング・セット内の各SQL文が完了するまで実行され、パフォーマンス・データが収集されます。実行統計を収集することによってパフォーマンス分析の精度は大幅に向上しますが、分析にかかる時間は長くなります。1つのSQL文によってタスクが長時間停止状態になる場合があるため、この設定は使用しないことをお薦めします。

    • 「カスタマイズ」を選択して、指定する秒数、分数、時間数を入力します。

  6. テスト・システムのデータベース環境が可能なかぎり本番環境と一致していることを確認して、「試行環境設定済み」を選択します。

  7. 「スケジュール」セクションで、次の手順を実行します。

    1. 「タイムゾーン」リストで、タイムゾーン・コードを選択します。

    2. 「即時」(即時にタスクを開始する場合)または、「後で」(「日付」および「時間」フィールドで指定した時間にタスクを開始するようスケジュールする場合)を選択します。

  8. 「発行」をクリックします。

    実行が開始されると、「ガイド付きワークフロー」ページが表示されます。

    実行中、この手順のステータス・アイコンは時計に変わります。ステータス・アイコンをリフレッシュするには、「リフレッシュ」をクリックします。選択したオプションおよびSQLワークロードのサイズによっては、実行が完了するまで時間がかかる場合があります。実行が完了したら、ステータス・アイコンがチェック・マークに変わり、次の手順の「実行」アイコンが有効になります。

  9. 変更前のパフォーマンス・データが構築されたら、変更後のテスト・システムでSQLチューニング・セット内のSQL文を再実行することによってシステム変更を実行し、変更後のパフォーマンス・データを構築できます。詳細は、第5章「変更後のSQL試行の作成」を参照してください。

4.2 APIを使用した変更前のSQL試行の作成

この項では、DBMS_SQLPA.EXECUTE_ANALYSIS_TASKプロシージャを使用して変更前のパフォーマンス・データを構築する方法について説明します。

次のパラメータを使用して、EXECUTE_ANALYSIS_TASKプロシージャをコールします。

  • task_nameパラメータを、実行するSQLパフォーマンス・アナライザのタスクの名前に設定します。

  • 次のいずれかの方法でexecution_typeパラメータを設定します。

    • EXPLAIN PLANに設定して、SQL文を実行せずに、SQLチューニング・セット内のすべてのSQL文の実行計画を生成します。

    • TEST EXECUTE(推奨)に設定し、SQLチューニング・セット内のすべての文を実行し、それらの実行計画および実行統計を生成します。TEST EXECUTEを指定すると、プロシージャによって実行計画および実行統計が生成されます。実行統計によって、パフォーマンスが改善されたSQL文またはパフォーマンスが低下したSQL文をSQLパフォーマンス・アナライザで特定できるようになります。実行計画を生成するのみでなく、実行統計を収集することによってパフォーマンス分析の精度は大幅に向上しますが、分析にかかる時間は長くなります。

    • SQL試行の実行統計および計画に関してSQLチューニング・セットを参照するように、CONVERT SQLSETを設定します。実行パラメータSQLSET_NAMEおよびSQLSET_OWNERの値も指定する必要があります。

  • execution_nameパラメータを使用して、実行を識別するための名前を指定します。指定しなかった場合、SQLパフォーマンス・アナライザによってタスク実行の名前が自動的に生成されます。

  • execution_paramsパラメータを使用して、実行パラメータを指定します。execution_paramsパラメータは、指定した実行の名前/ペアとして指定されます。たとえば、次の実行パラメータを設定できます。

    • time_limitパラメータは、グローバルな時間制限を指定して、タイムアウト前にSQLチューニング・セット内のすべてのSQL文を処理します。

    • local_time_limitパラメータは、時間制限を指定して、タイムアウト前にSQLチューニング・セット内の各SQL文を処理します。

    • リモートでテストを実行する場合は、DATABASE_LINKタスク・パラメータをDBMS_SQLPAパッケージのEXECUTE権限およびテスト・システムのADVISOR権限を持つユーザーに接続しているパブリック・データベース・リンクのグローバル名に設定します。

    • 行ロックの取得と行の変更を含め、DML文を完全に実行するには、EXECUTE_FULLDMLパラメータをTRUEに設定します。SQLパフォーマンス・アナライザは、DML実行の後でロールバックを発行して、永続的な変更が行われないようにします。このパラメータのデフォルト値はFALSEで、データを変更せずにDML文の問合せ部分のみが実行されます。

    • 関連する取得済のinit.ora設定をテスト実行時にリストアするには、APPLY_CAPTURED_COMPILENVパラメータをTRUEに設定します。一般に、SQL試行を実行するのは、環境を変更するときの変更内容のテストが目的であるため、これはデフォルトの動作ではありません。ただし、この方法は、init.ora設定が変更されていない場合(索引作成などの場合)に使用できます。この方法は、リモートSQL試行ではサポートされていません。

次の例は、システム変更に行われたファンクション・コールを示しています。

EXEC DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(task_name => 'my_spa_task', -
       execution_type => 'TEST EXECUTE', - 
       execution_name => 'my_exec_BEFORE_change');

変更前のパフォーマンス・データが構築されたら、変更後のテスト・システムでSQLチューニング・セット内のSQL文を再実行することによってシステム変更を実行し、変更後のパフォーマンス・データを構築できます。詳細は、第5章「変更後のSQL試行の作成」を参照してください。


関連項目:

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