日本語PDF

CREATE OUTLINE

目的

ノート:

ストアド・アウトラインは非推奨になりました。ストアド・アウトラインは、下位互換性を保つために今でもサポートされています。ただし、かわりにSQL計画管理を使用することをお薦めします。SQL計画管理では、ストアド・アウトラインよりも非常に安定したSQLパフォーマンスを実現するSQL計画ベースラインが作成されます。

DBMS_SPMパッケージのMIGRATE_STORED_OUTLINEファンクションまたはEnterprise Manager Cloud Controlを使用して、既存のストアド・アウトラインをSQL計画ベースラインに移行できます。移行が完了したら、ストアド・アウトラインに移行済のマークが付けられ、削除できるようになります。DBMS_SPMパッケージのDROP_MIGRATED_STORED_OUTLINEファンクションを使用して、システム上のすべての移行済ストアド・アウトラインを削除できます。

参照: SQL計画管理の詳細は、『Oracle Database SQLチューニング・ガイド』を参照してください。DBMS_SPMパッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

CREATE OUTLINE文を使用すると、ストアド・アウトラインを作成できます。ストアド・アウトラインは、実行計画を生成するためにオプティマイザが使用する属性集合です。最適化に影響する要因に変更があるかどうかにかかわらず、特定のSQL文が発行された場合に、実行計画の生成に影響するアウトラインの集合を使用するように、オプティマイザに指示します。これらの要因における変更を考慮するように、アウトラインを変更することもできます。

ノート:

影響を与えるSQL文には、アウトライン作成時に指定した文と一致する文字列を指定する必要があります。

関連項目:

前提条件

パブリック・アウトラインまたはプライベート・アウトラインの作成には、CREATE ANY OUTLINEシステム権限が必要です。

ソース・アウトラインからクローン・アウトラインを作成するには、SELECT_CATALOG_ROLEロールも必要です。

個々のセッションまたはシステムに対して、ストアド・アウトラインを動的に使用可能または使用禁止にできます。

  • USE_STORED_OUTLINESパラメータを使用可能にすると、パブリック・アウトラインが使用可能になります。

  • USE_PRIVATE_OUTLINESパラメータを使用可能にすると、プライベート・ストアド・アウトラインが使用可能になります。

構文

create_outline::=

ノート:

outlineの後に指定する必須の句はありません。ただし、outlineの後には1つ以上の句を指定する必要があり、FROM句またはON句のどちらかを指定する必要があります。

セマンティクス

OR REPLACE

OR REPLACEを指定すると、既存のアウトラインを同じ名前の新しいアウトラインと置き換えることができます。

PUBLIC | PRIVATE

PUBLICを指定すると、PUBLICが使用するアウトラインを作成できます。これはデフォルトです。

PRIVATEを指定すると、現行のセッションのみがプライベートに使用するアウトラインを作成できます。このアウトラインのデータは、現行のスキーマに格納されます。

outline

ストアド・アウトラインに割り当てる一意の名前を指定します。名前は、「データベース・オブジェクトのネーミング規則」に指定されている要件を満たしている必要があります。outlineを指定しない場合、データベースがアウトライン名を生成します。

FROM source_outline

FROM句を使用すると、既存のアウトラインのコピーによって新しいアウトラインを作成できます。デフォルトでは、パブリック領域のsource_categoryが検索されます。PRIVATEを指定すると、現行のスキーマのアウトラインが検索されます。

アウトラインのコピーの制限事項

FROM句を指定する場合、ON句は指定できません。

FOR CATEGORY句

ストアド・アウトラインをグループ化するために使用する任意の名前を指定します。たとえば、週末に使用するアウトラインの1つのカテゴリおよび四半期末に使用する別のカテゴリを指定できます。categoryを指定しない場合、アウトラインはDEFAULTカテゴリに格納されます。

ON句

文をコンパイルする際にアウトラインが作成されるSQL文を指定します。この句は、FROM句を使用して既存のアウトラインのコピーを作成する場合のみに指定するオプションです。

指定できる文は、SELECTDELETEUPDATEINSERT ... 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;