3 分析タスクの作成
-
SQL文のテスト実行
-
SQL文の実行計画の生成
-
SQLチューニング・セットで取得した実行統計および計画の参照
SQLパフォーマンス・アナライザのタスクを作成する場合は、入力ソースとしてSQLチューニング・セットを選択する必要があります。このSQLチューニング・セットがSQL試行のテスト実行または実行計画生成のソースとして使用されます。このため、試行間のパフォーマンスの相違は、環境の相違が原因となります。
この章では、SQLパフォーマンス・アナライザのタスクの作成方法について説明します。内容は次のとおりです。
ノート:
SQLパフォーマンス・アナライザを実行するための主要なインタフェースは、Oracle Enterprise Managerです。なんらかの理由でOracle Enterprise Managerを使用できない場合は、DBMS_SQLPA
PL/SQLパッケージを使用してSQLパフォーマンス・アナライザを実行できます。
関連項目:
Enterprise Managerを使用した分析タスクの作成
Oracle Enterprise Managerでは、いくつかのワークフローでSQLパフォーマンス・アナライザ・タスクを作成できます。
Enterprise Managerを使用して分析タスクを作成するには:
パラメータ変更ワークフローの使用
OPTIMIZER_FEATURES_ENABLE
初期化パラメータ・セットを10.2.0.4と12.1.0.1に設定することによって、SQLパフォーマンスを比較できます。
SQLチューニング・セットおよび比較メトリックを選択すると、SQLパフォーマンス・アナライザによってタスクが作成され、初期化パラメータが元の値に設定された試行が実行されます。その後、ALTER SESSION
文を発行することによって、SQLパフォーマンス・アナライザで、パラメータが変更された値に設定された2番目の試行が実行されます。したがって、変更の影響はテスト・セッションにローカルに限定されます。パフォーマンスの低下または変更は、システムによって生成された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文によってタスクが長時間停止状態になる場合があるため、この設定は使用しないことをお薦めします。
-
「カスタマイズ」を選択して、指定する秒数、分数、時間数を入力します。
-
-
「パラメータの変更」セクションで、次のステップを実行します。
-
「パラメータ名」フィールドに、変更する初期化パラメータの名前を入力するか、または検索アイコンをクリックして、「検索と選択: 初期化パラメータ」ウィンドウを使用して初期化パラメータを選択します。
-
「ベース値」フィールドに、初期化パラメータの現在の値を入力します。
-
「変更された値」フィールドに、初期化パラメータの新しい値を入力します。
-
-
「比較メトリック」リストで、分析に使用する比較メトリックを選択します。
-
ステップ5で「計画の生成」を選択した場合は、「オプティマイザ・コスト」を選択します。
-
ステップ5で「SQLの実行」を選択した場合は、次のいずれかのオプションを選択します。
-
経過時間
-
CPU時間
-
ユーザーI/O時間
-
バッファ読取り
-
物理I/O
-
オプティマイザ・コスト
-
I/Oインターコネクト・バイト
-
複数の比較メトリックを使用して比較分析を実行するには、異なるメトリックを使用してこの手順を繰り返すことによって比較分析を別々に実行します。
-
-
「スケジュール」セクションで、次の手順を実行します。
-
「タイムゾーン」リストで、タイムゾーン・コードを選択します。
-
「即時」(即時にタスクを開始する場合)または、「後で」(「日付」および「時間」フィールドで指定した時間にタスクを開始するようスケジュールする場合)を選択します。
-
-
「発行」をクリックします。
「SQLパフォーマンス・アナライザ・ホーム」ページが表示されます。
「SQLパフォーマンス・アナライザのタスク」セクションに、このタスクのステータスが表示されます。ステータス・アイコンをリフレッシュするには、「リフレッシュ」をクリックします。タスクが完了すると、「ステータス」フィールドが「完了」に変更されます。
-
「SQLパフォーマンス・アナライザのタスク」セクションで、タスクを選択して「名前」列のリンクをクリックします。
「SQLパフォーマンス・アナライザのタスク」ページが表示されます。
このページには、次のセクションが含まれています。
-
SQLチューニング・セット
このセクションには、SQLチューニング・セットに関する情報(名前、所有者、説明、SQLチューニング・セットに含まれているSQL文の数など)の概要が表示されます。
-
SQL試行
このセクションには、SQLパフォーマンス・アナライザのタスクで使用されるSQL試行を示す表が含まれています。
-
SQL試行比較
このセクションには、SQL試行比較の結果を示す表が含まれています。
-
-
「比較レポート」列のアイコンをクリックします。
「SQLパフォーマンス・アナライザのタスク結果」ページが表示されます。
-
パフォーマンス分析の結果を確認します。詳細は、「Oracle Enterprise Managerを使用したSQLパフォーマンス・アナライザ・レポートの確認」を参照してください。
-
パフォーマンスの低下が特定された場合は、「SQLチューニング・レポート」列のアイコンをクリックしてSQLチューニング・レポートを表示します。
オプティマイザ統計ワークフローの使用
オプティマイザ統計ワークフローを使用すると、オプティマイザ統計の変更によるSQLワークロードのパフォーマンスに対する影響を分析できます。
SQLパフォーマンス・アナライザは、テスト・セッションで保留中のオプティマイザ統計を使用可能にすることで、新しいオプティマイザ統計の影響をテストします。最初のSQL試行では、SQLチューニング・セットのベースラインのパフォーマンスが測定され、2番目のSQL試行では、保留中のオプティマイザ統計が使用されます。続いて、この2つの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文によってタスクが長時間停止状態になる場合があるため、この設定は使用しないことをお薦めします。
-
「カスタマイズ」を選択して、指定する秒数、分数、時間数を入力します。
-
-
「比較メトリック」リストで、比較分析に使用する比較メトリックを選択します。
-
経過時間
-
CPU時間
-
ユーザーI/O時間
-
バッファ読取り
-
物理I/O
-
オプティマイザ・コスト
-
I/Oインターコネクト・バイト
SQL試行で実行計画のみを生成するように選択した場合、選択可能な比較メトリックは「オプティマイザ・コスト」のみです。
複数の比較メトリックを使用して比較分析を実行するには、異なるメトリックを使用してこの手順を繰り返すことによって比較分析を別々に実行します。
-
-
保留中のオプティマイザ統計が収集されていることを確認し、「収集された保留中のオプティマイザ統計」を選択します。
-
「スケジュール」セクションで、次の手順を実行します。
-
「タイムゾーン」リストで、タイムゾーン・コードを選択します。
-
「即時」(即時にタスクを開始する場合)または、「後で」(「日付」および「時間」フィールドで指定した時間にタスクを開始するようスケジュールする場合)を選択します。
-
-
「発行」をクリックします。
「SQLパフォーマンス・アナライザ・ホーム」ページが表示されます。
「SQLパフォーマンス・アナライザのタスク」セクションに、このタスクのステータスが表示されます。ステータス・アイコンをリフレッシュするには、「リフレッシュ」をクリックします。タスクが完了すると、「ステータス」フィールドが「完了」に変更されます。
-
「SQLパフォーマンス・アナライザのタスク」セクションで、タスクを選択して「名前」列のリンクをクリックします。
「SQLパフォーマンス・アナライザのタスク」ページが表示されます。
このページには、次のセクションが含まれています。
-
SQLチューニング・セット
このセクションには、SQLチューニング・セットに関する情報(名前、所有者、説明、SQLチューニング・セットに含まれているSQL文の数など)の概要が表示されます。
-
SQL試行
このセクションには、SQLパフォーマンス・アナライザのタスクで使用されるSQL試行を示す表が含まれています。
-
SQL試行比較
このセクションには、SQL試行比較の結果を示す表が含まれています。
-
-
「比較レポート」列のアイコンをクリックします。
「SQLパフォーマンス・アナライザのタスク結果」ページが表示されます。
-
パフォーマンス分析の結果を確認します。詳細は、「Oracle Enterprise Managerを使用したSQLパフォーマンス・アナライザ・レポートの確認」を参照してください。
パフォーマンスの低下が見つかった場合は、SQL計画ベースラインとSQLチューニング・アドバイザを使用して修正できます。保留中のオプティマイザ統計で得られるパフォーマンスが満足できるものであれば、公開して使用することができます。
Exadataシミュレーション・ワークフローの使用
Exadataシミュレーション・ワークフローを使用すると、SQLワークフローのパフォーマンスに対するExadata Storage Serverインストールの影響をシミュレートできます。
Oracle Exadataは、非常に大きなI/O帯域幅を備えているうえ、データベースからストレージへのSQL処理のオフロード機能があります。これによって、Oracle Databaseでは、I/Oインターコネクトを介して送信されるデータ量を大幅に削減可能になると同時に、Exadataストレージ・セルへのCPUリソースのオフロードが可能になります。
SQLパフォーマンス・アナライザは、Exadata Storage Serverインストールをシミュレートし、SQLワークロードに対するI/Oインターコネクトの使用率の減少を測定することで、Exadata SQLオフロード処理の効果を分析することができます。
Exadataシミュレーションを実行するためにシステムのハードウェアや構成を変更する必要はありません。SQLチューニング・セットを選択した後、SQLパフォーマンス・アナライザによりタスクが作成され、Exadata Storage Serverシミュレーションが無効の状態で最初の試行が実行されます。SQLパフォーマンス・アナライザでは次に、Exadata Storage Serverシミュレーションが有効な状態で2回目の試行が実行されます。その後、「I/Oインターコネクト・バイト」比較メトリックを使用して2つの試行が比較され、Oracle Exadataを使用している場合は、Exadataストレージ・セルからデータベースに送信する必要のないデータの量を見積るSQLパフォーマンス・アナライザ・レポートが生成されます。両方のSQL試行で、SQL文が完了するまで実行され、I/Oインターコネクト・バイトの測定値が取得されます(最初の試行が実際のExadataの値で、2番目の試行がシミュレートされたExadataの値です)。I/Oインターコネクト・バイトで測定された変化を確認することによって、Exadataストレージ・セルで実行可能なフィルタリングの量、および通常このデータの処理に使用されるCPUの量のうちデータベースからオフロード可能な量を的確に見積もることができます。
ノート:
Exadataシミュレーションを使用しても計画の変更は発生しません。シミュレーションがI/Oインターコネクトの使用状況の向上に関する測定に重点を置いているため、Exadata Storage Serverインストール内で実行計画が変更されることはありません。また、Oracle Exadataはデータベースに送信されるデータ量のみを削減するため、データ圧縮が使用されている場合(次のノートを参照)を除いて、I/Oインターコネクト・バイトが増加することはありません。
ノート:
I/Oインターコネクト・バイトは、Exadata Storage Serverインストールを使用した場合のパフォーマンス変化の影響を測定するための唯一のメトリックであるため、Oracle Exadataをデータ圧縮とともに使用した場合は適切に機能しません。Exadataストレージ・セルはデータの圧縮解除も行うため、データが圧縮されている場合、Oracle Exadataを使用した状態でのSQL文(2番目のSQL試行)のI/Oインターコネクト・バイトが、Oracle Exadataを使用しない状態のI/Oインターコネクト・バイトよりも増加することがあります。実際にはそうでないにもかかわらず、SQL文のパフォーマンスが低下したと報告されるため、この比較は誤解を与えます。
ノート:
Exadataシミュレーションのワークフローは、Exadata以外のハードウェアでExadata Storage Serverインストールをシミュレートするために使用されます。Exadataハードウェアで変化をテストするには、標準のSQLパフォーマンス・アナライザのワークフローを使用します。
ノート:
Exadataシミュレーションがサポートされているのは、DSSおよびデータ・ウェアハウスのワークロードに対してのみです。
SQLパフォーマンス・アナライザのExadataシミュレーション・ワークフローを使用するには:
-
「SQLパフォーマンス・アナライザ」ホーム・ページの「SQLパフォーマンス・アナライザ・ワークフロー」で、「Exadataシミュレーション」をクリックします。
「Exadataシミュレーション」ページが表示されます。
-
「タスク名」フィールドに、タスクの名前を入力します。
-
「SQLチューニング・セット」フィールドに、分析するSQLワークロードが含まれているSQLチューニング・セットの名前を入力します。
または、検索アイコンをクリックして、「検索と選択: SQLチューニング・セット」ウィンドウでSQLチューニング・セットを検索します。
選択したSQLチューニング・セットが「SQLチューニング・セット」フィールドに表示されます。
-
「説明」フィールドに、オプションでタスクの説明を入力します。
-
「SQL当たりの時間制限」リストで、次のいずれかのアクションを実行して、試行時のSQL実行の時間制限を決定します。
-
「5分」を選択します。
この実行では、SQLチューニング・セット内の各SQL文が最大5分間実行され、パフォーマンス・データが収集されます。
-
「無制限」を選択します。
この実行では、SQLチューニング・セット内の各SQL文が完了するまで実行され、パフォーマンス・データが収集されます。実行統計を収集することによってパフォーマンス分析の精度は大幅に向上しますが、分析にかかる時間は長くなります。1つのSQL文によってタスクが長時間停止状態になる場合があるため、この設定は使用しないことをお薦めします。
-
「カスタマイズ」を選択して、指定する秒数、分数、時間数を入力します。
-
-
「スケジュール」セクションで、次の手順を実行します。
-
「タイムゾーン」リストで、タイムゾーン・コードを選択します。
-
「即時」(即時にタスクを開始する場合)または、「後で」(「日付」および「時間」フィールドで指定した時間にタスクを開始するようスケジュールする場合)を選択します。
-
-
「発行」をクリックします。
「SQLパフォーマンス・アナライザ・ホーム」ページが表示されます。
「SQLパフォーマンス・アナライザのタスク」セクションに、このタスクのステータスが表示されます。ステータス・アイコンをリフレッシュするには、「リフレッシュ」をクリックします。タスクが完了すると、「ステータス」フィールドが「完了」に変更されます。
-
「SQLパフォーマンス・アナライザのタスク」セクションで、タスクを選択して「名前」列のリンクをクリックします。
「SQLパフォーマンス・アナライザのタスク」ページが表示されます。
このページには、次のセクションが含まれています。
-
SQLチューニング・セット
このセクションには、SQLチューニング・セットに関する情報(名前、所有者、説明、SQLチューニング・セットに含まれているSQL文の数など)の概要が表示されます。
-
SQL試行
このセクションには、SQLパフォーマンス・アナライザのタスクで使用されるSQL試行を示す表が含まれています。
-
SQL試行比較
このセクションには、SQL試行比較の結果を示す表が含まれています。
-
-
「比較レポート」列のアイコンをクリックします。
「SQLパフォーマンス・アナライザのタスク結果」ページが表示されます。
-
パフォーマンス分析の結果を確認します。詳細は、「Oracle Enterprise Managerを使用したSQLパフォーマンス・アナライザ・レポートの確認」を参照してください。
最初と2番目の試行間のExadataシミュレーションでのSQLパフォーマンスの向上は、このレポートに取得されます。一般に、SQLワークロードに多数の行をスキャンする問合せ、または表の列の小さなサブセットをスキャンする問合せが含まれている場合、より大きな効果を期待できます。逆に、索引付き表または行数が少ない表を問合せるSQLワークロードは、Exadataシミュレーションからの効果は少なくなります。
ガイド付きワークフローの使用
ノート:
分析タスクを作成してデータベース初期化パラメータの変更をテストする場合は、簡略化されたパラメータ変更ワークフローをかわりに使用してください。詳細は、「パラメータ変更ワークフローの使用」を参照してください。
SQLパフォーマンス・アナライザ・タスクのガイド付きワークフローを使用するには:
APIを使用した分析タスクの作成
この項では、DBMS_SQLPA.CREATE_ANALYSIS_TASK
ファンクションを使用してSQLパフォーマンス・アナライザのタスクを作成する方法について説明します。タスクは、SQLパフォーマンス・アナライザの実行時の入力および結果が格納されるデータベース・コンテナです。
分析タスクを作成するには:
-
次のパラメータを使用して
CREATE_ANALYSIS_TASK
ファンクションをコールします。-
task_name
を設定して、SQLパフォーマンス・アナライザのタスクの任意の名前を指定します。 -
sqlset_name
をSQLチューニング・セットの名前に設定します。 -
sqlset_owner
をSQLチューニング・セットの所有者に設定します。デフォルトは現在のスキーマ所有者です。 -
basic_filter
を、SQLチューニング・セットからSQLを除外するために使用するSQL述語に設定します。 -
order_by
を設定して、SQL文が実行される順番を指定します。このパラメータを使用すると、時間制限に達しても、より重要なSQL文が処理され、スキップされないようにすることができます。
-
top_sql
を設定して、除外およびランク付け後にSQL文の上位の番号のみが考慮されるようにします。
次の例は、ファンクション・コールを示しています。
VARIABLE t_name VARCHAR2(100); EXEC :t_name := DBMS_SQLPA.CREATE_ANALYSIS_TASK(sqlset_name => 'my_sts', - task_name => 'my_spa_task');
-
分析タスクが作成されると、「変更前のSQL試行の作成」の説明に従って、SQLチューニング・セットのSQL文を実行して変更前のパフォーマンス・データを作成できます。
関連項目:
-
DBMS_SQLPA.CREATE_ANALYSIS_TASK
ファンクションについてさらに学習するには、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください
APIを使用した分析タスクの構成
DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER
プロシージャを使用してパラメータを指定することによって、分析タスクを構成できます。
この項では、次の項目について説明します。
APIを使用した分析タスクの実行計画の比較方法の構成
分析タスクの実行計画の比較方法を構成するには:
-
SET_ANALYSIS_TASK_PARAMETER
プロシージャを使用して、PLAN_LINES_COMPARISON
パラメータの値を設定します。表3-1は、
PLAN_LINES_COMPARISON
パラメータの有効な値を示しています。
表3-1 SQLパフォーマンス・アナライザ・タスクの実行計画方法
方法 | 説明 |
---|---|
|
分析タスクで常に実行計画の行ごとの比較が実行されます。 |
|
最初のSQL試行の計画のハッシュ値の計算が変更された場合、または2番目のSQL試行が使用できない場合にのみ、分析タスクで実行計画の行ごとの比較が実行されます。 |
|
計画のハッシュ値が不明の場合にのみ、分析タスクで実行計画の行ごとの比較が実行されます。これがデフォルト値です。 |
次の例に、分析タスクの実行計画方法をAUTO
に設定する方法を示します。
EXEC DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER(task_name => 'my_spa_task', - parameter => 'PLAN_LINES_COMPARISON', - value => 'AUTO');
関連項目:
-
DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER
プロシージャの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。
APIを使用したExadataシミュレーションの分析タスクの構成
分析タスクでExadataシミュレーションを有効にするには:
-
次に例を示すとおり、変更後のSQL試行を作成する前に、
SET_ANALYSIS_TASK_PARAMETER
プロシージャをコールします。EXEC DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER(task_name => 'my_spa_task', - parameter => 'CELL_SIMULATION_ENABLED', - value => 'TRUE');
この操作によって、変更後のSQL試行を作成する際に、Exadataシミュレーションが有効になります。作成した変更後のSQL試行は、Exadataシミュレーションを無効にして作成した変更前のSQL試行と比較することができます。
または、tcellsim.sql
スクリプトを使用してExadataシミュレーションを実行することもできます。
tcellsim.sqlを使用してExadataのシミュレーションを実行するには:
-
SQLプロンプトで次のように入力します。
@$ORACLE_HOME/rdbms/admin/tcellsim.sql
-
使用するSQLチューニング・セットの名前および所有者を入力します。
Enter value for sts_name: MY_STS Enter value for sts_owner: IMMCHAN
スクリプトによって次の4つのステップが自動的に実行されます。
-
SQLパフォーマンス・アナライザのタスクの作成
-
Exadataシミュレーションを無効にした状態でのSQL文のテスト実行
-
Exadataシミュレーションを有効にした状態でのSQL文のテスト実行
-
パフォーマンスの比較と分析レポートの生成
-
関連項目:
-
DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER
プロシージャの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。
APIを使用した分析タスクでのマルチテナント・コンテナ・データベース識別子の再マッピング
取得したSQL文をSQLチューニング・セットに格納し、SQLパフォーマンス・アナライザ・タスクの作成時に入力ソースとして使用できます。その後、SQLパフォーマンス・アナライザはこのSQLチューニング・セットをSQL試行のテスト実行または実行計画生成のソースとして使用します。
非CDBからマルチテナント・コンテナ・データベース(CDB)に転送されたSQLチューニング・セットを入力ソースとして使用する場合、SQLチューニング・セット内のSQL文のCDB識別子を再マッピングして、STSをCDB内で使用できるようにする必要があります。CDB識別子を再マッピングすると、SQLチューニング・セット内の各SQL文はCDB内の対応するプラガブル・データベース(PDB)に再マッピング可能なCDB識別子に関連付けられます。
通常CDB識別子は、SQLチューニング・セットを非CDBからCDBに転送する際に再マッピングする必要があります。この場合、単純にSQLチューニング・セットをSQLパフォーマンス・アナライザの入力ソースとして使用します。ただし、CDB識別子がまだ再マッピングされていないSQLチューニング・セットを使用している場合、SQLパフォーマンス・アナライザのタスク・プロパティとして再マッピングを指定できます。
分析タスク用にCDB識別子を再マッピングするには:
CDB識別子が再マッピングされると、古いCDB識別子と一致する新しいCDB識別子をSQLパフォーマンス・アナライザは使用して、CDB内の適切なPDBでSQL文を実行します。
関連項目:
-
SQLチューニング・セットの転送の詳細は、『Oracle Database SQLチューニング・ガイド』を参照してください
-
DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER
プロシージャの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。
分析タスクでのトリガーの実行の構成
分析タスクでトリガーを実行するかどうかを構成できます。デフォルトでは、トリガーは、SQLパフォーマンス・アナライザで実行されます。
分析タスクでのトリガーの実行を構成するには:
-
SET_ANALYSIS_TASK_PARAMETER
プロシージャを使用して、EXECUTE_TRIGGERS
パラメータの値を設定します。表3-2は、
EXECUTE_TRIGGERS
パラメータの有効な値を示しています。
表3-2 EXECUTE_TRIGGERSパラメータの有効な値
値 | 説明 |
---|---|
|
TEST EXECUTEのEXECUTE_FULLDMLモードであってもトリガーはSQLパフォーマンスアナライザで実行されません。これがデフォルト値です。 |
|
すべてのトリガーは、SQLパフォーマンス・アナライザで実行されます。 |
次に、EXECUTE_TRIGGERS
パラメータの値をFALSE
に設定する例を示します。この設定では、トリガーはSQLパフォーマンス・アナライザで実行されません。
EXEC DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER(task_name => 'my_spa_task', - parameter => 'EXECUTE_TRIGGERS', - value => 'FALSE');
関連項目:
-
DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER
プロシージャの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。
分析タスクでコールにより返される日付の構成
分析タスクでSYSDATEを参照するSQL文の処理方法を構成できます。
分析タスクでSYSDATEのコールによって返される日付を構成するには:
REPLACE_SYSDATE_WITH
パラメータを設定すると、タスク実行内のSYSDATEへのすべてのコールは、このパラメータで指定された日付を返します。これは、SPAタスクへの入力がSQLチューニング・セット(STS)である場合に使用できます。
-
SET_ANALYSIS_TASK_PARAMETER
プロシージャを使用して、REPLACE_SYSDATE_WITH
パラメータの値を設定します。
表3-3は、REPLACE_SYSDATE_WITH
パラメータの有効な値を示しています。
表3-3は、REPLACE_SYSDATE_WITHパラメータの有効な値を示しています。
値 | 説明 |
---|---|
CURRENT_SYSDATE |
タスク実行内でのSYSDATEへのすべてのコールは現在のSYSDATEを返します。これはデフォルトです。 |
SQLSET_SYSDATE |
SYSDATEコールを含むすべてのSQL文で、SQLパフォーマンス・アナライザは、その値を、該当にのSQL文に対する |
ノート:
このパラメータの設定は、SQLパフォーマンス・アナライザのタスクの実行以外のSYSDATEへのコールには影響しません。
次に、REPLACE_SYSDATE_WITH
パラメータの値をSQLSET_SYSDATE
に設定する例を示します。これにより、タスクの実行内のSYSDATEへのコールでは、SQLチューニング・セットでSYSDATEが返されます。
EXEC DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER(task_name => 'my_spa_task', - parameter => 'REPLACE_SYSDATE_WITH', - value => 'SQLSET_SYSDATE');
関連項目:
-
DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER
プロシージャの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。 -
DBA_SQLSET_STATEMENTS
ビューの詳細は、『Oracle Databaseリファレンス』を参照してください。
分析タスクでフェッチする行数の構成
分析タスクでSQL文に対してフェッチする行数を構成できます。
分析タスクでフェッチする行数を構成するには:
-
SET_ANALYSIS_TASK_PARAMETER
プロシージャを使用して、NUM_ROWS_TO_FETCH
パラメータの値を設定します。表3-4に、
NUM_ROWS_TO_FETCH
パラメータの有効な値を示します。
表3-4 NUM_ROWS_TO_FETCHパラメータの有効な値
値 | 説明 |
---|---|
ALL_ROWS |
SQLのすべての行をフェッチします。これがデフォルト値です。 |
AUTO |
結果行の数は、SQLチューニング・セットで取得されたオプティマイザ環境の |
AVERAGE |
結果行の数は、処理される行数の合計およびSQLチューニング・セット内の各SQLの合計実行回数の比率として計算されます。 |
有効な数値 |
結果行の数は、この指定値と等しくなり、フェッチする行数が少ない場合はこの値より少なくなります。 |
次に、NUM_ROWS_TO_FETCH
パラメータの値をALL_ROWS
に設定する例を示します。これにより、SQLのすべての行がフェッチされます。
EXEC DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER(task_name => 'my_spa_task', - parameter => 'NUM_ROWS_TO_FETCH', - value => 'ALL_ROWS');
関連項目:
-
DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER
プロシージャの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。 -
OPTIMIZER_MODE
データベース初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。
分析タスクの並列度の構成
並列度の設定および同時SQL実行の有効化が可能です。
分析タスクの並列度を構成するには:
-
SET_ANALYSIS_TASK_PARAMETER
プロシージャを使用して、TEST_EXECUTE_DOP
パラメータの値を設定します。
次の表は、TEST_EXECUTE_DOP
パラメータの有効な値を示しています。
表3-5 TEST_EXECUTE_DOPパラメータの有効な値
値 | 説明 |
---|---|
|
これはデフォルト値です。タスクは順次実行されます。 |
以上 |
同時実行が有効になっています。 |
TEST_EXECUTE_DOP
パラメータの値を4
に設定して同時実行を有効化する方法の例を示します。EXEC DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER(task_name => 'my_spa_task', - parameter => 'TEST_EXECUTE_DOP', - value => 4);
ノート:
同時実行は、EXPLAIN PLAN
およびTEST EXECUTE
実行タイプでのみサポートされています。
関連項目:
DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER
プロシージャの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。
SQLパフォーマンス・アナライザの使用によるSQL結果セットの検証
2つのSQLパフォーマンス・アナライザ(SPA)試行のテスト実行時に、SQL結果セットの比較がサポートされるようになりました。
SQL結果セットが検証され、行または値の数が一致していない場合は、SQLパフォーマンス・アナライザ・レポートに記録されます。SQL結果セット検証は、COMPARE_RESULTSET
パラメータによって制御されます。
SET_ANALYSIS_TASK_PARAMETER
プロシージャは、COMPARE_RESULTSET
パラメータの値を設定するのに使用されます。
次の表は、COMPARE_RESULTSET
パラメータの有効な値を示しています。
表3-6 COMPARE_RESULTSETパラメータの有効な値
値 | 説明 |
---|---|
|
SQL結果セットの比較が実行されます。 |
|
SQL結果セットの比較は実行されません。 |
次に、COMPARE_RESULTSET
パラメータの値をTRUE
に設定する方法の例を示します。
EXEC DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER(task_name => 'my_spa_task', -
parameter => 'COMPARE_RESULTSET', -
value => 'TRUE');
関連項目:
DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER
プロシージャの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。