用途
注意: ストアド・アウトラインは、SQL計画管理を優先して、今後のリリースではサポートされなくなります。Oracle Database 11gリリース2(11.2)では、ストアド・アウトラインは過去のリリースと同様に機能します。新規のアプリケーションにはSQL計画管理を使用することをお薦めします。SQL計画管理では、ストアド・アウトラインよりも非常に安定したSQLパフォーマンスを実現するSQL計画ベースラインが作成されます。
参照: SQL計画管理の詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。 |
CREATE
OUTLINE
文を使用すると、ストアド・アウトラインを作成できます。ストアド・アウトラインは、実行計画を生成するためにオプティマイザが使用する属性集合です。最適化に影響する要因に変更があるかどうかにかかわらず、特定のSQL文が発行された場合に、実行計画の生成に影響するアウトラインの集合を使用するように、オプティマイザに指示します。これらの要因における変更を考慮するように、アウトラインを変更することもできます。
注意: 影響を与えるSQL文には、アウトライン作成時に指定した文と一致する文字列を指定する必要があります。 |
関連項目:
|
前提条件
パブリック・アウトラインまたはプライベート・アウトラインの作成には、CREATE
ANY
OUTLINE
システム権限が必要です。
ソース・アウトラインからクローン・アウトラインを作成するには、SELECT_CATALOG_ROLE
ロールも必要です。
個々のセッションまたはシステムに対して、ストアド・アウトラインを動的に使用可能または使用禁止にできます。
USE_STORED_OUTLINES
パラメータを使用可能にすると、パブリック・アウトラインが使用可能になります。
USE_PRIVATE_OUTLINES
パラメータを使用可能にすると、プライベート・ストアド・アウトラインが使用可能になります。
関連項目: アウトラインを使用したパフォーマンス・チューニングの詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。 |
構文
create_outline::=
注意: outline の後に指定する必須の句はありません。ただし、outline の後には1つ以上の句を指定する必要があり、FROM 句またはON 句のどちらかを指定する必要があります。 |
セマンティクス
OR
REPLACE
を指定すると、既存のアウトラインを同じ名前の新しいアウトラインと置き換えることができます。
PUBLIC
を指定すると、PUBLIC
が使用するアウトラインを作成できます。これはデフォルトです。
PRIVATE
を指定すると、現行のセッションのみがプライベートに使用するアウトラインを作成できます。このアウトラインのデータは、現行のスキーマに格納されます。
outline
ストアド・アウトラインに割り当てる一意の名前を指定します。outline
を指定しない場合、データベースがアウトライン名を生成します。
FROM
句を使用すると、既存のアウトラインのコピーによって新しいアウトラインを作成できます。デフォルトでは、パブリック領域のsource_category
が検索されます。PRIVATE
を指定すると、現行のスキーマのアウトラインが検索されます。
アウトラインのコピーの制限事項: FROM
句を指定する場合、ON
句は指定できません。
ストアド・アウトラインをグループ化するために使用する任意の名前を指定します。たとえば、週末に使用するアウトラインの1つのカテゴリおよび四半期末に使用する別のカテゴリを指定できます。category
を指定しない場合、アウトラインはDEFAULT
カテゴリに格納されます。
文をコンパイルする際にアウトラインが作成されるSQL文を指定します。この句は、FROM
句を使用して既存のアウトラインのコピーを作成する場合のみに指定するオプションです。
指定できる文は、SELECT
、DELETE
、UPDATE
、INSERT
... SELECT
またはCREATE
TABLE
... AS
SELECT
のいずれかです。
ON句の制限事項: この句には、次の制限事項があります。
ON
句を指定する場合、FROM
句は指定できません。
マルチテーブルINSERT
文でアウトラインを作成できません。
ON
句内のSQL文に、リモート・オブジェクトのDML操作を含めることはできません。
注意: 後続の文で、同じSQL文に対して追加のアウトラインを指定できますが、同じ文の各アウトラインはCATEGORY 句で異なるカテゴリを指定する必要があります。 |
例
アウトラインの作成例: 次の文は、ON
文をコンパイルすることによってストアド・アウトラインを作成します。アウトラインはsalaries
という名前で、special
カテゴリに格納されます。
CREATE OUTLINE salaries FOR CATEGORY special ON SELECT last_name, salary FROM employees;
USE_STORED_OUTLINES
パラメータにspecial
が設定されている場合、同じSELECT
文が後でコンパイルされると、アウトラインsalaries
を作成する場合と同様に実行計画が生成されます。
プライベート・クローン・アウトラインの作成例: 次の文は、前述の例で作成したパブリック・カテゴリsalaries
に基づいて、ストアド・プライベート・アウトラインmy_salaries
を作成します。
CREATE OR REPLACE PRIVATE OUTLINE my_salaries FROM salaries;
プライベート・アウトラインのパブリック領域への公開例: 次の文は、プライベート編集の後でプライベート・アウトラインをパブリック領域にコピー(公開)します。
CREATE OR REPLACE OUTLINE public_salaries FROM PRIVATE my_salaries;