ヘッダーをスキップ
Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス
11g リリース1(11.1)
E05686-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

85 DBMS_OUTLN

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


関連項目:

DBMS_OUTLNパッケージの使用方法の詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』のプラン・スタビリティの使用方法に関する項を参照してください。


注意:

今後のリリースではSQL計画管理が使用されるため、ストアド・アウトラインはサポートされなくなります。Oracle Database 11g リリース1(11.1)では、ストアド・アウトラインは以前のリリースと同じように動作します。ただし、新しいアプリケーションでは、SQL計画管理を使用することをお薦めします。 SQL計画管理はSQL計画のベースラインを作成します。このベースラインは、ストアド・アウトラインと比較して、パフォーマンスと安定性の面でより優れたSQLを提供します。既存のストアド・アウトラインが存在する場合は、DBMS_SPMパッケージのLOAD_PLANS_FROM_CURSOR_CACHEファンクションまたはLOAD_PLANS_FROM_SQLSETファンクションを使用してこのストアド・アウトラインをSQL計画のベースラインに移行することを検討してください。移行の完了後に、ストアド・アウトラインを無効にするか、または削除する必要があります。

この章では、次の項目について説明します。


DBMS_OUTLNの使用方法


概要

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

今後のリリースではSQL計画管理が使用されるため、ストアド・アウトラインはサポートされなくなります。11g R1では、ストアド・アウトラインは以前のリリースと同じように動作します。ただし、新しいアプリケーションでは、SQL計画管理を使用することをお薦めします。 SQL計画管理はSQL計画のベースラインを作成します。このベースラインは、ストアド・アウトラインと比較して、パフォーマンスと安定性の面でより優れたSQLを提供します。既存のストアド・アウトラインが存在する場合は、DBMS_SPMパッケージのLOAD_PLANS_FROM_CURSOR_CACHEファンクションまたはLOAD_PLANS_FROM_SQLSETファンクションを使用してこのストアド・アウトラインをSQL計画のベースラインに移行することを検討してください。移行の完了後に、ストアド・アウトラインを無効にするか、または削除する必要があります。


セキュリティ・モデル

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

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


DBMS_OUTLNサブプログラムの要約

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

サブプログラム 説明

CLEAR_USEDプロシージャ


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

CREATE_OUTLINEプロシージャ


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

DROP_BY_CATプロシージャ


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

DROP_UNUSEDプロシージャ


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

EXACT_TEXT_SIGNATURESプロシージャ


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

UPDATE_BY_CATプロシージャ


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

UPDATE_SIGNATURESプロシージャ


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



CLEAR_USEDプロシージャ

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

構文

DBMS_OUTLN.CLEAR_USED (
   name    IN    VARCHAR2);

パラメータ

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

パラメータ 説明

name

アウトライン名。



CREATE_OUTLINEプロシージャ

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

構文

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

パラメータ

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

パラメータ 説明

hash_value

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

child_number

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

category

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



DROP_BY_CATプロシージャ

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

構文

DBMS_OUTLN.DROP_BY_CAT (
   cat VARCHAR2);

パラメータ

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

パラメータ 説明

cat

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


使用上の注意

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

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

DBMS_OUTLN.DROP_BY_CAT('DEFAULT');

DROP_UNUSEDプロシージャ

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

構文

DBMS_OUTLN.DROP_UNUSED;

使用上の注意

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


EXACT_TEXT_SIGNATURESプロシージャ

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

構文

DBMS.OUTLN.EXACT_TEXT_SIGNATURES;

使用上の注意

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


UPDATE_BY_CATプロシージャ

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

構文

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

パラメータ

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

パラメータ 説明

oldcat

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

newcat

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



UPDATE_SIGNATURESプロシージャ

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

構文

DBMS.OUTLN.UPDATE_SIGNATURES;

使用上の注意

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