110 DBMS_OUTLN

DBMS_OUTLNパッケージ(OUTLN_PKGと同義)には、ストアド・アウトラインの管理に関連するサブプログラムのための機能インタフェースが含まれています。

参照:

DBMS_OUTLNパッケージの使用方法の詳細は、『Oracle Database SQLチューニング・ガイド』を参照してください。

注意:

ストアド・アウトラインは、SQL計画の管理を優先するために将来のリリースではサポートされなくなります。Oracle Database 11gリリース1 (11.1)では、ストアド・アウトラインは以前のリリースと同様に引き続き機能します。ただし、新規アプリケーションではSQL計画の管理を使用することを強くお薦めします。SQL計画管理によってSQL計画ベースラインが作成され、これによってストアド・アウトラインよりも優れたSQLパフォーマンスおよび安定性が実現されます。既存のストアド・アウトラインがある場合は、DBMS_SPMパッケージのLOAD_PLANS_FROM_CURSOR_CACHEファンクションまたはLOAD_PLANS_FROM_SQLSETファンクションを使用して、SQL計画ベースラインへの移行を検討してください。移行が完了したら、ストアド・アウトラインは無効化または削除する必要があります。

この章のトピックは、次のとおりです:

110.1 DBMS_OUTLNの概要

ストアド・アウトラインは、指定したSQL文についての実行計画に関連するストアド・データです。これによって、オプティマイザは、最初にアウトラインとともに生成された計画と同じ実行計画を繰り返して再作成でき、アウトラインに格納されたデータの一部は、プラン・スタビリティを保つために使用するヒントで構成されています。

ストアド・アウトラインは、SQL計画の管理を優先するために将来のリリースではサポートされなくなります。11g R1以降、ストアド・アウトラインは以前のリリースとして機能し続けていますが、新規アプリケーションではSQL計画の管理を使用することを強くお薦めします。SQL計画管理によってSQL計画ベースラインが作成され、これによってストアド・アウトラインよりも優れたSQLパフォーマンスおよび安定性が実現されます。既存のストアド・アウトラインがある場合は、DBMS_SPM パッケージのLOAD_PLANS_FROM_CURSOR_CACHEファンクションまたはLOAD_PLANS_FROM_SQLSETファンクションを使用して、SQL計画ベースラインへの移行を検討してください。移行が完了したら、ストアド・アウトラインは無効化または削除する必要があります。

110.2 DBMS_OUTLNのセキュリティ・モデル

DBMS_OUTLNには、適切なユーザーのみ使用できる管理プロシージャが含まれています。EXECUTE権限は、DBAが明示的に定めないかぎり、一般ユーザー・コミュニティにまで拡張されません。

アウトラインの管理目的に使用可能なPL/SQLファンクションは、そのプロシージャ(またはパッケージ)に対するEXECUTE権限があるユーザーのみが実行できます。

110.3 DBMS_OUTLNサブプログラムの要約

この表は、DBMS_OUTLNサブプログラムを示し、簡単に説明しています。

表110-1 DBMS_OUTLNパッケージのサブプログラム

サブプログラム 説明

CLEAR_USEDプロシージャ

アウトラインの使用済フラグを消去します。

CREATE_OUTLINEプロシージャ

ハッシュ値および子番号で識別される共有カーソルからアウトラインを生成します。

DROP_BY_CATプロシージャ

指定されたカテゴリに属しているアウトラインを削除します。

DROP_UNUSEDプロシージャ

SQL文のコンパイルで適用されなくなったアウトラインを削除します。

EXACT_TEXT_SIGNATURESプロシージャ

アウトラインの署名を完全なテキスト一致に基づいて計算されたものに更新します。

UPDATE_BY_CATプロシージャ

あるカテゴリにあるアウトラインのカテゴリを、新規のカテゴリに変更します。

UPDATE_SIGNATURESプロシージャ

アウトラインの署名を現行バージョンの署名に更新します。

110.3.1 CLEAR_USEDプロシージャ

このプロシージャは、アウトラインの使用済フラグを消去します。

構文

DBMS_OUTLN.CLEAR_USED (
   name    IN    VARCHAR2);

パラメータ

表110-2 CLEAR_USEDプロシージャのパラメータ

パラメータ 説明

name

アウトライン名。

110.3.2 CREATE_OUTLINEプロシージャ

このプロシージャは、ハッシュ値および子番号で識別される共有カーソルからSQL文を再解析することによってアウトラインを生成します。

構文

DBMS_OUTLN.CREATE_OUTLINE (
   hash_value    IN NUMBER,
   child_number  IN NUMBER,
   category      IN VARCHAR2 DEFAULT 'DEFAULT');

パラメータ

表110-3 CREATE_OUTLINEプロシージャのパラメータ

パラメータ 説明

hash_value

対象となる共有カーソルを識別するハッシュ値。

child_number

対象となる共有カーソルの子番号。

category

アウトラインを作成するカテゴリ(オプション)。

110.3.3 DROP_BY_CATプロシージャ

このプロシージャは、特定のカテゴリに属しているアウトラインを削除します。特に指定されないかぎりアウトラインはDEFAULTカテゴリに置かれますが、ユーザーはオプションとして、所有するアウトラインをカテゴリと呼ばれる複数のグループにグループ化できます。

構文

DBMS_OUTLN.DROP_BY_CAT (
   cat VARCHAR2);

パラメータ

表110-4 DROP_BY_CATプロシージャのパラメータ

パラメータ 説明

cat

削除するアウトラインのカテゴリ。

使用上の注意

このプロシージャでは、1回のコールでアウトラインのカテゴリがパージされます。

この例では、DEFAULTカテゴリ内にあるすべてのアウトラインを削除します。

DBMS_OUTLN.DROP_BY_CAT('DEFAULT'); 

110.3.4 DROP_UNUSEDプロシージャ

このプロシージャは、SQL文のコンパイルで適用されなくなったアウトラインを削除します。

構文

DBMS_OUTLN.DROP_UNUSED;

使用上の注意

DROP_UNUSEDは、動的SQLの結果として作成された使用できるのが1回かぎりのSQL文のアプリケーションによって生成されたアウトラインに対して使用できます。このプロシージャが使用されたアウトラインは使用されなくなり、重要なディスク領域が解放されます。

110.3.5 EXACT_TEXT_SIGNATURESプロシージャ

このプロシージャは、アウトラインの署名を完全なテキスト一致に基づいて計算されたものに更新します。

構文

DBMS_OUTLN.EXACT_TEXT_SIGNATURES;

使用上の注意

このプロシージャは、アウトラインを8.1.6以前のリリース用にダウングレードする目的にのみ適切です。

110.3.6 UPDATE_BY_CATプロシージャ

このプロシージャは、あるカテゴリにあるすべてのアウトラインのカテゴリを、新規のカテゴリに変更します。

構文

DBMS_OUTLN.UPDATE_BY_CAT (
   oldcat    VARCHAR2 default 'DEFAULT',
   newcat    VARCHAR2 default 'DEFAULT');

パラメータ

表110-5 UPDATE_BY_CATプロシージャのパラメータ

パラメータ 説明

oldcat

アウトラインの現行カテゴリ。

newcat

アウトラインの新規カテゴリ。

110.3.7 UPDATE_SIGNATURESプロシージャ

このプロシージャは、アウトラインの署名を現行バージョンの署名に更新します。

構文

DBMS_OUTLN.UPDATE_SIGNATURES;

使用上の注意

このプロシージャは、以前のリリースで生成されたアウトラインをインポートした場合に、その署名が現行リリースの計算アルゴリズムに適合することを確認するために実行する必要があります。