128 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計画ベースラインへの移行を検討してください。移行が完了したら、ストアド・アウトラインは無効化または削除する必要があります。
この章のトピックは、次のとおりです:
128.1 DBMS_OUTLNの概要
ストアド・アウトラインは、指定したSQL文についての実行計画に関連するストアド・データです。これによって、オプティマイザは、最初にアウトラインとともに生成された計画と同じ実行計画を繰り返して再作成でき、アウトラインに格納されたデータの一部は、プラン・スタビリティを保つために使用するヒントで構成されています。
ストアド・アウトラインは、SQL計画の管理を優先するために将来のリリースではサポートされなくなります。11g R1以降、ストアド・アウトラインは以前のリリースとして機能し続けていますが、新規アプリケーションではSQL計画の管理を使用することを強くお薦めします。SQL計画管理によってSQL計画ベースラインが作成され、これによってストアド・アウトラインよりも優れたSQLパフォーマンスおよび安定性が実現されます。既存のストアド・アウトラインがある場合は、DBMS_SPM パッケージのLOAD_PLANS_FROM_CURSOR_CACHEファンクションまたはLOAD_PLANS_FROM_SQLSETファンクションを使用して、SQL計画ベースラインへの移行を検討してください。移行が完了したら、ストアド・アウトラインは無効化または削除する必要があります。
128.2 DBMS_OUTLNのセキュリティ・モデル
DBMS_OUTLN
には、適切なユーザーのみ使用できる管理プロシージャが含まれています。EXECUTE
権限は、DBAが明示的に定めないかぎり、一般ユーザー・コミュニティにまで拡張されません。
アウトラインの管理目的に使用可能なPL/SQLファンクションは、そのプロシージャ(またはパッケージ)に対するEXECUTE
権限があるユーザーのみが実行できます。
128.3 DBMS_OUTLNサブプログラムの要約
この表は、DBMS_OUTLN
サブプログラムを示し、簡単に説明しています。
表128-1 DBMS_OUTLNパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
アウトラインの使用済フラグをクリアします。 |
|
ハッシュ値および子番号で識別される共有カーソルからアウトラインを生成します。 |
|
指定されたカテゴリに属しているアウトラインを削除します。 |
|
SQL文のコンパイルで適用されなくなったアウトラインを削除します。 |
|
アウトラインの署名を完全なテキスト一致に基づいて計算されたものに更新します。 |
|
あるカテゴリにあるアウトラインのカテゴリを、新規のカテゴリに変更します。 |
|
アウトラインの署名を現行バージョンの署名に更新します。 |
128.3.1 CLEAR_USEDプロシージャ
このプロシージャは、アウトラインの使用済フラグをクリアします。
構文
DBMS_OUTLN.CLEAR_USED ( name IN VARCHAR2);
パラメータ
表128-2 CLEAR_USEDプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
アウトライン名。 |
128.3.2 CREATE_OUTLINEプロシージャ
このプロシージャは、ハッシュ値および子番号で識別される共有カーソルからSQL文を再解析することによってアウトラインを生成します。
構文
DBMS_OUTLN.CREATE_OUTLINE ( hash_value IN NUMBER, child_number IN NUMBER, category IN VARCHAR2 DEFAULT 'DEFAULT');
パラメータ
表128-3 CREATE_OUTLINEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
対象となる共有カーソルを識別するハッシュ値。 |
|
対象となる共有カーソルの子番号。 |
|
アウトラインを作成するカテゴリ(オプション)。 |
128.3.3 DROP_BY_CATプロシージャ
このプロシージャは、特定のカテゴリに属しているアウトラインを削除します。特に指定されないかぎりアウトラインはDEFAULT
カテゴリに置かれますが、ユーザーはオプションとして、所有するアウトラインをカテゴリと呼ばれる複数のグループにグループ化できます。
構文
DBMS_OUTLN.DROP_BY_CAT ( cat VARCHAR2);
パラメータ
表128-4 DROP_BY_CATプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
削除するアウトラインのカテゴリ。 |
使用上のノート
このプロシージャでは、1回のコールでアウトラインのカテゴリがパージされます。
例
この例では、DEFAULT
カテゴリ内にあるすべてのアウトラインを削除します。
DBMS_OUTLN.DROP_BY_CAT('DEFAULT');
128.3.4 DROP_UNUSEDプロシージャ
このプロシージャは、SQL文のコンパイルで適用されなくなったアウトラインを削除します。
構文
DBMS_OUTLN.DROP_UNUSED;
使用上のノート
DROP_UNUSED
は、動的SQLの結果として作成された使用できるのが1回かぎりのSQL文のアプリケーションによって生成されたアウトラインに対して使用できます。このプロシージャが使用されたアウトラインは使用されなくなり、重要なディスク領域が解放されます。
128.3.5 EXACT_TEXT_SIGNATURESプロシージャ
このプロシージャは、アウトラインの署名を完全なテキスト一致に基づいて計算されたものに更新します。
構文
DBMS_OUTLN.EXACT_TEXT_SIGNATURES;
使用上のノート
このプロシージャは、アウトラインを8.1.6以前のリリース用にダウングレードする目的にのみ適切です。
128.3.6 UPDATE_BY_CATプロシージャ
このプロシージャは、あるカテゴリにあるすべてのアウトラインのカテゴリを、新規のカテゴリに変更します。
構文
DBMS_OUTLN.UPDATE_BY_CAT ( oldcat VARCHAR2 default 'DEFAULT', newcat VARCHAR2 default 'DEFAULT');
パラメータ
表128-5 UPDATE_BY_CATプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
アウトラインの現行カテゴリ。 |
|
アウトラインの新規カテゴリ。 |