日本語PDF

5 変更後のSQL試行の作成

変更前のSQLのパフォーマンス・データを計算したら、テスト・システムでシステム変更を実行できます。システム変更を実行する前に、変更前のパフォーマンス・データを生成するために初期環境でSQLワークロードを実行してあることを確認します。たとえば、データベース初期化パラメータを変更することによってSQLパフォーマンスが受ける影響をテストする場合は、データベース初期化パラメータを新しい値に変更する前にSQLワークロードを1回実行します。実行する変更の種類に応じて、SQLのパフォーマンス分析を実行する新しい環境と一致するように、環境をテスト・システムに再構成する必要がある場合があります。

ノート:

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

SQLパフォーマンス・アナライザを使用して分析できるシステム変更の例は、「SQLパフォーマンス・アナライザ」に示されています。たとえば、データベース初期化パラメータの変更またはデータベースのアップグレードによってSQLパフォーマンスが受ける影響を確認する場合があります。また、自動データベース診断モニター(ADDM)、SQLチューニング・アドバイザ、SQLアクセス・アドバイザなどのアドバイザから提示された推奨事項に基づいてシステム変更を決定する場合もあります。

システム変更を実行したら、SQLワークロードを再度実行して、変更後のバージョンのパフォーマンス・データを構築できます。SQLパフォーマンス・アナライザでは、SQL文の実行結果が変更後のSQL試行に格納されます。

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

ノート:

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

Oracle Enterprise Managerを使用した変更後のSQL試行の作成

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

変更後のSQL試行を作成するためのシステム変更を実行する場合は、その前に、変更前のSQL試行を作成しておく必要があります。詳細は、「変更前のSQL試行の作成」を参照してください。

Enterprise Managerを使用して変更後のSQL試行を作成するには:

  1. 「ガイド付きワークフロー」ページで、「変更された環境へのSQL試行の作成」ステップの「実行」アイコンをクリックします。

    「SQL試行の作成」ページが表示されます。

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

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

  4. 「作成方法」リストで、次のいずれかのアクションを実行して、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試行と変更後のSQL試行を比較します。

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

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

変更後のSQL試行を作成するためのシステム変更を実行する場合は、その前に、変更前のSQL試行を作成しておく必要があります。詳細は、「変更前のSQL試行の作成」を参照してください。

ノート:

データベース・リンクを介して別のテスト・システム上でSQL文をリモート実行する場合、このプロシージャをコールするリモート・ユーザーは、DBMS_SQLPAパッケージに対するEXECUTE権限を持っている必要があります。

変更後のSQL試行を作成するには:

  • 「APIを使用した変更前のSQL試行の作成」で説明されているパラメータを使用して、EXECUTE_ANALYSIS_TASKプロシージャをコールします。

    execution_nameパラメータには必ず別の値を指定してください。また、execution_typeパラメータに同じ値を使用することで、変更前のSQL試行と同じ方法を使用して変更後のSQL試行を作成することを強くお薦めします。

    ノート:

    Oracle Exadataシミュレーションを実行する場合、最初にCELL_SIMULATION_ENABLEDタスク・パラメータをTRUEに設定してください。

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

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

変更後のパフォーマンス・データを構築したら、「SQL試行の比較」で説明する比較分析を実行して、変更前のSQL試行と変更後のSQL試行を比較します。

関連項目: