SQLパフォーマンス・アナライザのタスクを作成し、入力ソースとしてSQLチューニング・セットを選択したら、テスト・システムの初期環境を設定する必要があります。 テスト・システムのデータベース環境を設定するには、SQLの最適化およびパフォーマンスに影響する必要な環境変更を手動で行う必要があります。 これらの変更には、初期化パラメータの変更、オプティマイザ統計の収集または設定、索引の作成などがあります。 データベース環境の設定については、「テスト・システムの設定」を参照してください。
テスト・システムの環境が適切に構成されたら、SQLワークロードを実行して変更前のバージョンのパフォーマンス・データを構築した後で、システム変更を実行できます。 SQLパフォーマンス・アナライザでは、SQL文の実行結果が変更前のSQL試行に格納されます。 詳細は、「変更前のSQLパフォーマンス・アナライザの測定」を参照してください。
この章では、変更前のSQL試行の作成方法について説明します。内容は次のとおりです。
注意: 変更前のSQL試行を作成するための主要なインタフェースは、Oracle Enterprise Managerです。 なんらかの理由でOracle Enterprise Managerを使用できない場合は、DBMS_SQLPA PL/SQLパッケージを使用して変更前のSQL試行を作成できます。 |
Oracle Enterprise Managerを使用して変更前のSQLパフォーマンス・データを収集するには、次の手順を実行します。
「ガイド付きワークフロー」ページで、「初期環境でSQLチューニング・セットをリプレイ」手順の「実行」アイコンをクリックします。
「SQL試行の作成」ページが表示されます。 選択したSQLチューニング・セットのサマリー(SQLワークロードを含む)が表示されます。
「SQL試行名」フィールドに、SQL試行の名前を入力します。
「SQL試行の説明」フィールドに、SQL試行の説明を入力します。
「作成方法」リストで、次のいずれかのアクションを実行して、SQL試行の作成方法および生成されるコンテンツを確認します。
「SQLをローカルで実行」を選択します。
このSQL試行では、実際にテスト・システムでSQL文をローカルに実行することによって、SQLチューニング・セット内の各SQL文に対して実行計画と実行統計の両方が生成されます。
「SQLをリモートで実行」を選択します。
このSQL試行では、実際にパブリック・データベース・リンクを介して別のテスト・システムでSQL文をリモートに実行することによって、SQLチューニング・セット内の各SQL文に対して実行計画と実行統計の両方が生成されます。
「計画をローカルで実行」を選択します。
このSQL試行では、オプティマイザが起動され、実際にSQL文が実行されることなく、テスト・システムで実行計画がローカルに作成されます。
「計画をリモートで実行」を選択します。
SQL試行では、オプティマイザが起動され、実際にSQL文が実行されることなく、パブリック・データベース・リンクを介して別のテスト・システムで実行計画がリモートに作成されます。
「SQLチューニング・セットから作成」を選択します。
このSQL試行では、直接SQLチューニング・セットから試行に実行計画および実行統計がコピーされます。
「SQL当たりの時間制限」リストで、次のいずれかのアクションを実行して、試行時のSQL実行の時間制限を決定します。
「無制限」を選択します。
この実行では、SQLチューニング・セット内の各SQL文が完了するまで実行され、パフォーマンス・データが収集されます。 実行統計を収集することによってパフォーマンス分析の精度は大幅に向上しますが、分析にかかる時間は長くなります。 1つのSQL文によってタスクが長時間停止状態になる場合があるため、この設定は使用しないことをお薦めします。
「カスタマイズ」を選択して、指定する秒数、分数、時間数を入力します。
テスト・システムのデータベース環境が可能なかぎり本番環境と一致していることを確認して、「試行環境設定済み」を選択します。
「スケジュール」セクションで、次の手順を実行します。
「タイムゾーン」リストで、タイムゾーン・コードを選択します。
「即時」(即時にタスクを開始する場合)または、「後で」(「日付」および「時間」フィールドで指定した時間にタスクを開始するようスケジュールする場合)を選択します。
「発行」をクリックします。
実行が開始されると、「ガイド付きワークフロー」ページが表示されます。
実行中、この手順のステータス・アイコンは時計に変わります。 ステータス・アイコンをリフレッシュするには、「リフレッシュ」をクリックします。 選択したオプションおよびSQLワークロードのサイズによっては、実行が完了するまで時間がかかる場合があります。 実行が完了したら、ステータス・アイコンがチェック・マークに変わり、次の手順の「実行」アイコンが有効になります。
変更前のパフォーマンス・データが構築されたら、変更後のテスト・システムでSQLチューニング・セット内のSQL文を再実行することによってシステム変更を実行し、変更後のパフォーマンス・データを構築できます。詳細は、第10章「変更後の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パフォーマンス・アナライザで特定できるようになります。 実行計画を生成するのみでなく、実行統計を収集することによってパフォーマンス分析の精度は大幅に向上しますが、分析にかかる時間は長くなります。
execution_name
パラメータを使用して、実行を識別するための名前を指定します。 指定しなかった場合、SQLパフォーマンス・アナライザによってタスク実行の名前が自動的に生成されます。
execution_params
パラメータを使用して、実行パラメータを指定します。 execution_params
パラメータは、指定した実行の名前/値ペアとして指定されます。 たとえば、次の実行パラメータを設定できます。
time_limit
パラメータは、グローバルな時間制限を指定して、タイムアウト前にSQLチューニング・セット内のすべてのSQL文を処理します。
local_time_limit
パラメータは、時間制限を指定して、タイムアウト前にSQLチューニング・セット内の各SQL文を処理します。
リモートでテストを実行する場合は、DATABASE_LINK
タスク・パラメータをDBMS_SQLPA
パッケージのEXECUTE
権限およびテスト・システムのADVISOR
権限を持つユーザーに接続しているパブリック・データベース・リンクのグローバル名に設定します。
次の例は、システム変更前に行われたファンクション・コールを示しています。
EXEC DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(task_name => 'my_spa_task', - execution_type => 'TEST EXECUTE', - execution_name => 'my_exec_BEFORE_change');
変更前のパフォーマンス・データが構築されたら、変更後のテスト・システムでSQLチューニング・セット内のSQL文を再実行することによってシステム変更を実行し、変更後のパフォーマンス・データを構築できます。詳細は、第10章「変更後のSQL試行の作成」を参照してください。
参照: DBMS_SQLPA.EXECUTE_ANALYSIS_TASK ファンクションについては、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。 |