SQL計画の展開
通常、SQL文のSQL計画ベースラインは、単一の確定済の計画から開始します。ただし、様々な条件の異なる計画とともに実行されると、SQL文の実行が良くなる場合があります。たとえば、値が異なる選択性になるバインド変数を使用したSQL文は、いくつかの優れた計画を持つ場合があります。マテリアライズド・ビューまたは索引の作成あるいは表の再パーティション化により、現在の計画が他の計画よりコストが高くなる場合があります。
新しい計画がSQL計画ベースラインに一度も追加されなかった場合、一部のSQL文のパフォーマンスが低下する可能性があります。したがって、新しく検出された計画を展開し、SQL計画ベースラインを追加する必要があるかどうかを確認する必要があります。計画の展開は、SQL計画ベースラインに含める前に新しい計画のパフォーマンスを検証して、パフォーマンスの低下を防止します。
計画の展開は、次の個別のステップで構成されます。
-
確定されていない計画がSQL計画ベースラインの確定済の計画と少なくとも同じパフォーマンスであることを確認します。
-
以前の確定済の計画と同じパフォーマンスであることが証明された場合、計画履歴の確定されていない計画を確定済の計画として計画ベースラインに追加します。
手動で計画を展開するか、SQL計画管理(SPM)展開アドバイザを使用できます。
デフォルトでは、SPM展開アドバイザは、スケジュールされているメンテナンス・ウィンドウで毎日実行されます。すべての承認されていない計画をランク付けし、ウィンドウの実行中にできるだけ多くの計画のテスト実行を行います。展開アドバイザは、SQL計画ベースラインの最もコストの低い承認済計画を選択し、確定されていない各計画と比較します。計画が既存の承認済の計画よりもパフォーマンスが高い場合、データベースが自動的に承認します。
参照:
-
SPM展開アドバイザの構成およびAPIを使用した手動の実行の詳細は、『Oracle Database SQLチューニング・ガイド』を参照してください。
計画を手動で展開するには:
-
データベース・ホームページにアクセスします。
詳細は、「データベースのホームページのアクセス」を参照してください。
-
「パフォーマンス」→「SQL」→「SQL計画管理」を選択します。
「データベース・ログイン」ページが表示されたら、管理者権限のあるユーザーとしてログインします。「SQL計画管理」ページの「SQLプロファイル」サブページが表示されます。
-
「SQL計画ベースライン」をクリックします。
「SQL計画ベースライン」サブページが表示されます。
-
表で、「確定済」列に「いいえ」がある1つ以上のSQL計画を選択し、「展開」をクリックします。
SQL計画ベースラインの展開ページが表示されます。
-
実行するオプションを指定します。
-
「パフォーマンスの検証」で、次のいずれかを選択します。
-
データベースで計画が現在のベースライン計画と同じまたはそれ以上のパフォーマンスであるかを検証するには、「はい」を選択します。
-
実行方法に関係なく計画を自動的に展開するには、「いいえ」を選択します。
-
-
「時間制限」で、次のいずれかを選択します。
-
データベースで確定されていない計画のパフォーマンスを検証する期間を決定する「自動」。
-
実行時間に関係なく完了まで検証を実行する「無制限」。
-
検証プロセスの時間制限を指定する「指定」。関連するフィールドに分単位の値を入力します。
-
-
「アクション」で、次のいずれかを選択します。
-
データベースで計画を確定してレポートを作成する「レポートして承認」。
-
データベースでレポートを作成して計画を確定しない「レポートのみ」。
-
オプションを実装するには、「OK」をクリックします。
レポートが表示されます。レポートを表示した後、「戻る」をクリックしてSQL計画ベースライン・サブページに戻ります。
-