SQLパフォーマンス・アナライザのタスクを作成し、入力ソースとしてSQLチューニング・セットを選択したら、テスト・システムの初期環境を設定する必要があります。テスト・システムのデータベース環境を設定するには、SQLの最適化およびパフォーマンスに影響する必要な環境変更を手動で行う必要があります。これらの変更には、初期化パラメータの変更、オプティマイザ統計の収集または設定、索引の作成などがあります。可能なかぎり本番システムと同様にテスト・システムを構築することをお薦めします。Enterprise Managerの専用ワークフローでは、両方のSQL試行が自動作成され、テスト・セッションに限定された変更が行われるため、このプロセスが簡単になっています。データベース環境の設定の詳細は、「テスト・システムの設定」を参照してください。
注意: SQL試行は、パブリック・データベース・リンクにアクセスすることで、リモート・システム上で実行することもできます。リモートのSQL試行を実行する場合は、SQL文が実行されるリモート・データベースのデータベース・バージョンが、その接続先のデータベースのデータベース・バージョン以下であることが必要です。Oracle Databaseリリース11.2.0.2以上では、Oracle Active Data Guardインスタンスなどの読取り専用データベースをリモート・データベースとして指定できます。 |
テスト・システムの環境が適切に構成されたら、変更前のバージョンのパフォーマンス・データを構築した後で、システム変更を実行できます。次のいずれかの方法で、SQLパフォーマンス・アナライザを使用してSQL試行を作成できます。
ワークロード内のSQL文の実行
ワークロード内のSQL文に対する実行計画の生成
SQLチューニング・セットからのパフォーマンス・データおよび実行計画のロード(APIのみ)
詳細は、「変更前のSQLパフォーマンス・アナライザの測定」を参照してください。
この章では、変更前のSQL試行の作成方法について説明します。内容は次のとおりです。
注意: 変更前のSQL試行を作成するための主要なインタフェースは、Oracle Enterprise Managerです。なんらかの理由でOracle Enterprise Managerを使用できない場合は、DBMS_SQLPA PL/SQLパッケージを使用して変更前のSQL試行を作成できます。 |
この項では、Oracle Enterprise Managerを使用して変更前のSQLパフォーマンス・データを収集する方法について説明します。
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実行の時間制限を決定します。
「5分」を選択します。
この実行では、SQLチューニング・セット内の各SQL文が最大5分間実行され、パフォーマンス・データが収集されます。
「無制限」を選択します。
この実行では、SQLチューニング・セット内の各SQL文が完了するまで実行され、パフォーマンス・データが収集されます。実行統計を収集することによってパフォーマンス分析の精度は大幅に向上しますが、分析にかかる時間は長くなります。1つのSQL文によってタスクが長時間停止状態になる場合があるため、この設定は使用しないことをお薦めします。
「カスタマイズ」を選択して、指定する秒数、分数、時間数を入力します。
テスト・システムのデータベース環境が可能なかぎり本番環境と一致していることを確認して、「試行環境設定済み」を選択します。
「スケジュール」セクションで、次の手順を実行します。
「タイムゾーン」リストで、タイムゾーン・コードを選択します。
「即時」(即時にタスクを開始する場合)または、「後で」(「日付」および「時間」フィールドで指定した時間にタスクを開始するようスケジュールする場合)を選択します。
「発行」をクリックします。
実行が開始されると、「ガイド付きワークフロー」ページが表示されます。
実行中、この手順のステータス・アイコンは時計に変わります。ステータス・アイコンをリフレッシュするには、「リフレッシュ」をクリックします。選択したオプションおよびSQLワークロードのサイズによっては、実行が完了するまで時間がかかる場合があります。実行が完了したら、ステータス・アイコンがチェック・マークに変わり、次の手順の「実行」アイコンが有効になります。
変更前のパフォーマンス・データが構築されたら、変更後のテスト・システムでSQLチューニング・セット内のSQL文を再実行することによってシステム変更を実行し、変更後のパフォーマンス・データを構築できます。詳細は、第5章「変更後の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試行の作成」を参照してください。
関連項目:
|