変更前のSQL試行を作成するには、次の手順に従います。
次のパラメータを使用して、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チューニング・セットのSQL文を再度実行し、変更後のパフォーマンス・データを作成します。
関連項目:
DBMS_SQLPA.EXECUTE_ANALYSIS_TASKファンクションについては、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。