MON_GET_SECTION 表関数 - パッケージ・キャッシュからのセクションのコピーの取得
MON_GET_SECTION 表関数は、パッケージ・キャッシュから動的または静的な SQL ステートメントのセクションのコピーを返します。 返されるセクションは、将来の分析のために保存しておくことができます。 例えば、ステートメントのプラン変更を調べる場合、保存されたセクションを EXPLAIN_FROM_DATA ストアード・プロシージャーの入力として渡して、以前のアクセス・プランを調べることができます。
許可
以下のいずれかの権限が必要です。
- ルーチンに対する EXECUTE 特権
- DATAACCESS 権限
- SQLADM 権限
- DBADM 権限
デフォルトの PUBLIC 特権
なし
構文
スキーマは SYSPROC です。
ルーチン・パラメーター
- 実行可能 ID
- データベース・パッケージ・キャッシュの固有のセクションを指定する、タイプ VARCHAR (32) FOR BIT DATA の入力引数。
このルーチンは、このセクションのすべてのメンバーのパッケージ・キャッシュを検索します。 静的 SQL の場合、カタログは、パッケージ・キャッシュにもうセクションがない場合に検索されます。
NULL または無効な値が指定されると、SQL0171 が返されます。
戻される情報
| 列名 | データ・タイプ | 説明 |
|---|---|---|
| SECTION_TYPE | CHAR(1) | section_type - セクション・タイプ標識 : モニター・エレメント |
| SECTION_ENV | BLOB(134 MB) | section_env セクション環境 : モニター・エレメント |
例
以下の照会を使用して、ステートメント・テキスト、ステートメント ID、プラン ID、およびセクション情報をコンパイル環境から取得します。 現在パッケージ・キャッシュ内にあるすべてのステートメントに関する情報が返されます。 その情報は、REPOSITORY_SECTIONS と呼ばれる表に挿入されます。
INSERT INTO
REPOSITORY_SECTIONS(STMT_TEXT, STMTID, PLANID,
SEMANTIC_ENV_ID, SECTION_DATA)
SELECT STMT_TEXT, STMTID, PLANID, SEMANTIC_ENV_ID,
( SELECT B.SECTION_ENV
FROM TABLE(MON_GET_SECTION(A.EXECUTABLE_ID)) AS B)
SECTION_DATA
FROM TABLE(MON_GET_PKG_CACHE_STMT(NULL,NULL,NULL,-2)) AS Aこの情報を使用して、実行されたステートメントの履歴を作成できます。 EXPLAIN_FROM_DATA ストアード・プロシージャーを使用して、保存されたセクションをストアード・プロシージャーに渡すことによって、保存された各ステートメントのアクセス・プランを調べることができます。