DBMS_SHARED_POOL
パッケージは、共有プールへのアクセスを提供し、この共有プールは、カーソルとPL/SQLオブジェクトが格納されている共有メモリー領域です。DBMS_SHARED_POOL
によって、共有プール内のオブジェクトのサイズを表示したり、メモリーの断片化を減らすためにオブジェクトを保存または非保存としてマークできます。
この章では、次の項目について説明します。
ここで提供されるプロシージャは、大規模なPL/SQLオブジェクトのロード時に役立ちます。大規模なPL/SQLオブジェクトのロード時には、大量の小規模オブジェクトを共有プールから期限切れとして削除して空き領域を用意する必要があるため(メモリー断片化のため)、ユーザーの応答時間に影響を与えます。場合によっては、大規模なオブジェクトをロードするためのメモリーが不足している場合があります。
DBMS_SHARED_POOL
は、頻繁に実行するトリガーに対しても有効です。コンパイルしたトリガーを共有プールで頻繁に使用する表に保管できます。
さらに、DBMS_SHARED_POOL
は順序もサポートしています。順序番号は、順序が期限切れで共有プールから削除されると失われます。DBMS_SHARED_POOL
は、共有プールに順序を保存し、順序番号の損失を防止するのに役立ちます。
表133-1 DBMS_SHARED_POOLパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
ABORTED_REQUEST_THRESHOLDプロシージャ |
共有プールについて、異常終了を要求するしきい値を設定します。 |
|
共有プールにオブジェクトを保存します。 |
|
ライブラリ・キャッシュ・オブジェクトをホット・オブジェクトとしてマーク付けします。 |
|
名前付きオブジェクトまたはオブジェクトの指定したヒープをパージします。 |
|
共有プールにあるオブジェクトで、指定サイズより大きいオブジェクトを表示します。 |
|
指定オブジェクトを解放します。 |
|
ライブラリ・キャッシュ・オブジェクトのホット・オブジェクトとしてのマークを解除します。 |
このプロシージャは、共有プールにオブジェクトを保存します。オブジェクトが一度共有プールに保存されると、期間切れ削除の対象となりません。このことは、頻繁に使用されるラージ・オブジェクトに役立つ場合があります。ラージ・オブジェクトを共有プールに配置する場合、十分な連続領域を作成するために複数のオブジェクトを削除する必要がある場合があります。
パラメータ
表133-3 KEEPプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
保存するオブジェクトの名前。 この識別子は、アドレスと、 現在、 |
|
(オプション)このパラメータを指定しないと、パッケージは、最初のパラメータをパッケージ、プロシージャまたはファンクションの名前とみなして名前を解決します。 入力内容がパッケージ、プロシージャまたはファンクションの名前であることを完全に指定するには、 入力内容がタイプ名であることを指定するには、 入力内容がトリガー名であることを指定するには、 入力内容が順序名であることを指定するには、 最初の引数がカーソル・アドレスとハッシュ値の場合は、パラメータに |
使用上の注意
オブジェクトは2種類あります。
名前で指定するPL/SQLオブジェクト、トリガー、順序およびタイプ
2つの番号(共有プール内の位置を示す)で指定するSQLカーソル・オブジェクト
次に例を示します。
DBMS_SHARED_POOL.KEEP('scott.hispackage')
これは、SCOTT
が所有するパッケージHISPACKAGE
を保存します。PL/SQLオブジェクトの名前は、SQLのオブジェクトの命名規則に従っています(たとえば、デリミタ付き識別子やマルチバイトの名前などが可能です)。カーソルは、DBMS_SHARED_POOL
.KEEP('0034CDFF, 20348871','C')
によって保存でき、0034CDFF
はADDRESS
、20348871
はHASH_VALUE
です。最初の8文字は16進数の完全なアドレスである必要があることに注意してください。
このプロシージャは、ライブラリ・キャッシュ・オブジェクトをホット・オブジェクトとしてマーク付けします。
構文
DBMS_SHARED_POOL.MARKHOT ( schema VARCHAR2, objname VARCHAR2, namespace NUMBER DEFAULT 1, global BOOLEAN DEFAULT TRUE); DBMS_SHARED_POOL.MARKHOT ( hash VARCHAR2, namespace NUMBER DEFAULT 1, global BOOLEAN DEFAULT TRUE);
パラメータ
表133-4 MARKHOTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
オブジェクトが属するユーザー名またはスキーマ。 |
|
オブジェクト名。 |
|
オブジェクトの検索範囲となるライブラリ・キャッシュ・ネームスペースを示す数。 |
|
|
|
オブジェクトの16バイトのハッシュ値。 |
このプロシージャは、名前付きオブジェクトまたはオブジェクトの指定したヒープをパージします。
構文
DBMS_SHARED_POOL.PURGE ( name VARCHAR2, flag CHAR DEFAULT 'P', heaps NUMBER DEFAULT 1); DBMS_SHARED_POOL.PURGE ( schema VARCHAR2, objname VARCHAR2, namespace NUMBER, heaps NUMBER); DBMS_SHARED_POOL.PURGE ( hash VARCHAR2, namespace NUMBER, heaps NUMBER);
パラメータ
表133-5 PURGEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
パージするオブジェクトの名前。 この識別子は、アドレスと、 現在、 |
|
(オプション)このパラメータを指定しないと、パッケージは、最初のパラメータをパッケージ、プロシージャまたはファンクションの名前とみなして名前を解決します。 入力内容がパッケージ、プロシージャまたはファンクションの名前であることを完全に指定するには、'P'または'p'を設定します。 入力内容がタイプ名であることを指定するには、'T'または't'を設定します。 入力内容がトリガー名であることを指定するには、'R'または'r'を設定します。 入力内容が順序名であることを指定するには、'Q'または'q'を設定します。 最初の引数がカーソル・アドレスとハッシュ値の場合は、パラメータに'P'、'p'、'Q'、'q'、'R'、'r'、'T'、't'を除く任意の文字を指定する必要があります。 |
|
パージするヒープ。たとえば、ヒープ0およびヒープ6をパージする場合: 1<<0 | 1<<6 => hex 0x41 => decimal 65となります。このため、ヒープ=>65を指定します。デフォルトは1です。1は、オブジェクト全体がパージされるヒープ0を意味します。 |
|
オブジェクトが属するユーザー名またはスキーマ。 |
|
パージするオブジェクトの名前。 |
|
オブジェクトの検索範囲となるライブラリ・キャッシュ・ネームスペースを示す数。 |
|
オブジェクトの16バイトのハッシュ値。 |
このプロシージャは、shared_pool
にあるオブジェクトで指定したサイズより大きいオブジェクトを表示します。オブジェクト名も表示され、KEEP
またはUNKEEP
いずれかのコールへの引数として使用できます。
このプロシージャは、指定のオブジェクトを解放します。
構文
DBMS_SHARED_POOL.UNKEEP ( name VARCHAR2, flag CHAR DEFAULT 'P');
注意: このプロシージャは、将来自動メカニズムが実装されて不要になった場合サポートされなくなる可能性があります。 |
このプロシージャは、ライブラリ・キャッシュ・オブジェクトのホット・オブジェクトとしてのマークを解除します。
構文
DBMS_SHARED_POOL.UNMARKHOT ( schema VARCHAR2, objname VARCHAR2, namespace NUMBER DEFAULT 1, global BOOLEAN DEFAULT TRUE); DBMS_SHARED_POOL.UNMARKHOT ( hash VARCHAR2, namespace NUMBER DEFAULT 1, global BOOLEAN DEFAULT TRUE);