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

戻る
戻る
 
次へ
次へ
 

118 DBMS_SHARED_POOL

DBMS_SHARED_POOLパッケージは、共有プールへのアクセスを提供します。この共有プールは、カーソルとPL/SQLオブジェクトが格納されている共有メモリー領域です。 DBMS_SHARED_POOLによって、共有プール内のオブジェクト・サイズを表示したり、メモリーの断片化を減らすためにオブジェクトを保存または非保存としてマークできます。

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


DBMS_SHARED_POOLの使用方法


概要

ここで提供されるプロシージャは、大規模なPL/SQLオブジェクトのロード時に役立ちます。大規模なPL/SQLオブジェクトのロード時には、大量の小規模オブジェクトを共有プールから期限切れとして削除して空き領域を用意する必要があるため(メモリー断片化のため)、ユーザーの応答時間に影響を与えます。場合によっては、大規模なオブジェクトをロードするためのメモリーが不足している場合があります。

DBMS_SHARED_POOLは、頻繁に実行するトリガーに対しても有効です。コンパイルしたトリガーを共有プールで頻繁に使用する表に保管できます。

さらに、DBMS_SHARED_POOLは順序もサポートしています。順序番号は、順序が期限切れで共有プールから削除されると失われます。 DBMS_SHARED_POOLは、共有プールに順序を保存し、順序番号の損失を防止するのに役立ちます。


使用上の注意

DBMS_SHARED_POOLを作成するには、DBMSPOOL.SQLスクリプトを実行します。DBMSPOOL.SQLの実行後には、自動的にPRVTPOOL.PLBスクリプトが実行されます。 これらのスクリプトは、通常のデータベース作成では実行されません。


DBMS_SHARED_POOLサブプログラムの要約

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

サブプログラム 説明

ABORTED_REQUEST_THRESHOLDプロシージャ


共有プールについて、異常終了を要求するしきい値を設定します。

KEEPプロシージャ


共有プールにオブジェクトを保存します。

PURGEプロシージャ


名前付きオブジェクトまたはオブジェクトの指定したヒープをパージします。

SIZESプロシージャ


共有プールにあるオブジェクトで、指定サイズより大きいオブジェクトを表示します。

UNKEEPプロシージャ


指定オブジェクトを解放します。



ABORTED_REQUEST_THRESHOLDプロシージャ

このプロシージャは、共有プールについて、異常終了を要求するしきい値を設定します。

構文

DBMS_SHARED_POOL.ABORTED_REQUEST_THRESHOLD (
   threshold_size NUMBER);

パラメータ

表118-2 ABORTED_REQUEST_THRESHOLDプロシージャのパラメータ

パラメータ 説明

threshold_size

共有プール内で確保解除されたメモリー(解放されたメモリーではない)を解放しないための要求サイズ(バイト単位)。 threshold_sizeの範囲は5000から2GBまでです。


例外

しきい値が有効な範囲内にない場合は、例外が発生します。

使用上の注意

通常、要求が空きリストで満たされない場合、RDBMSは、LRUリストからオブジェクトを解放して要求を満たすことができるかを定期的にチェックし、メモリーを再要求しようとします。 このステップの完了後、RDBMSは、'ALTER SYSTEM FLUSH SHARED_POOL'とほぼ同等の内容を実行します。

これは、システム上のすべてのユーザーに影響を与えるため、このプロシージャは、その影響をthresh_holdサイズを超える共有メモリーの断片検索に失敗した処理にローカライズします。このユーザーは、LRUリストを検索しなくても、'メモリー不足'エラーとなります。


KEEPプロシージャ

このプロシージャは、共有プールにオブジェクトを保存します。オブジェクトが一度共有プールに保存されると、期間切れ削除の対象となりません。このことは、頻繁に使用されるラージ・オブジェクトに役立つ場合があります。ラージ・オブジェクトを共有プールに配置する場合、十分な連続領域を作成するために複数のオブジェクトを削除する必要がある場合があります。

構文

DBMS_SHARED_POOL.KEEP (
   name VARCHAR2,
   flag CHAR      DEFAULT 'P');

パラメータ

表118-3 KEEPプロシージャのパラメータ

パラメータ 説明

name

保存するオブジェクトの名前。

この識別子は、アドレスと、v$sqlareaビューのhash_value列を連結した値です。これは、SIZESプロシージャで表示されます。

現在、TABLEVIEWオブジェクトは保存できません。

flag

(オプション)このパラメータを指定しないと、パッケージは、最初のパラメータをパッケージ、プロシージャまたはファンクションの名前とみなして名前を解決します。

入力内容がパッケージ、プロシージャまたはファンクションの名前であることを完全に指定するには、'P'または'p'を設定します。

入力内容がタイプ名であることを指定するには、'T'または't'を設定します。

入力内容がトリガー名であることを指定するには、'R'または'r'を設定します。

入力内容が順序名であることを指定するには、'Q'または'q'を設定します。

最初の引数がカーソル・アドレスとハッシュ値の場合は、パラメータに'P'、'p'、'Q'、'q'、'R'、'r'、'T'、't'を除く任意の文字を指定する必要があります。


例外

指定されたオブジェクトが見つからない場合は、例外が発生します。

使用上の注意

オブジェクトは2種類あります。

次に例を示します。

DBMS_SHARED_POOL.KEEP('scott.hispackage')

この例では、SCOTTが所有するパッケージHISPACKAGEを保存します。PL/SQLオブジェクトの名前は、SQLのオブジェクト命名ルールに従っています(たとえば、デリミタ付き識別子やマルチバイトの名前などが可能です)。 カーソルは、DBMS_SHARED_POOL.KEEP('0034CDFF, 20348871')によって保存できます。最初の8文字は16進数の完全なアドレスである必要があります。


PURGEプロシージャ

このプロシージャは、名前付きオブジェクトまたはオブジェクトの指定したヒープをパージします。

構文

DBMS_SHARED_POOL.PURGE (
   name    VARCHAR2,
   flag    CHAR DEFAULT 'P',
   heaps   NUMBER DEFAULT 1)

パラメータ

表118-4 PURGEプロシージャのパラメータ

パラメータ 説明

name

パージするオブジェクトの名前。

この識別子は、アドレスと、v$sqlareaビューのhash_value列を連結した値です。これは、SIZESプロシージャで表示されます。

現在、TABLEVIEWオブジェクトはパージできません。

flag

(オプション)このパラメータを指定しないと、パッケージは、最初のパラメータをパッケージ、プロシージャまたはファンクションの名前とみなして名前を解決します。

入力内容がパッケージ、プロシージャまたはファンクションの名前であることを完全に指定するには、'P'または'p'を設定します。

入力内容がタイプ名であることを指定するには、'T'または't'を設定します。

入力内容がトリガー名であることを指定するには、'R'または'r'を設定します。

入力内容が順序名であることを指定するには、'Q'または'q'を設定します。

最初の引数がカーソル・アドレスとハッシュ値の場合は、パラメータに'P'、'p'、'Q'、'q'、'R'、'r'、'T'、't'を除く任意の文字を指定する必要があります。

heaps

パージするヒープ。たとえば、ヒープ0およびヒープ6をパージする場合:

1<<0 | 1<<6 => hex 0x41 => decimal 65となります。このため、ヒープ=>を指定します。デフォルトは1です。1は、オブジェクト全体がパージされるヒープ0を意味します。


例外

ORA-6570: 指定したオブジェクトを検出できない場合は例外が発生します。

ORA-6570: 永続的に保持するようにマークされているオブジェクトはパージできません。

使用上の注意

KEEPプロシージャでサポートされているすべてのオブジェクトに対してPURGEがサポートされています。


SIZESプロシージャ

このプロシージャは、shared_poolにあるオブジェクトで指定したサイズより大きいオブジェクトを表示します。オブジェクト名も表示され、KEEPまたはUNKEEPいずれかのコールへの引数として使用できます。

構文

DBMS_SHARED_POOL.SIZES (
   minsize NUMBER);

パラメータ

表118-5 SIZESプロシージャのパラメータ

パラメータ 説明

minsize

オブジェクトを表示するために、共有プール内で占有する必要があるサイズ(KB単位)。


使用上の注意

このプロシージャの使用前に、SQL*DBAまたはSQL*Plus 'SET SERVEROUTPUT ON SIZE XXXXX'コマンドを発行すると、結果が表示されます。


UNKEEPプロシージャ

このプロシージャは、指定のオブジェクトを解放します。

構文

DBMS_SHARED_POOL.UNKEEP (
   name VARCHAR2,
   flag CHAR     DEFAULT 'P');

注意:

このプロシージャは、将来自動メカニズムが実装されて不要になった場合サポートされなくなる可能性があります。


パラメータ

表118-6 UNKEEPプロシージャのパラメータ

パラメータ 説明

name

解放するオブジェクトの名前。KEEPプロシージャのnameパラメータの説明を参照してください。

flag

KEEPプロシージャのflagパラメータの説明を参照してください。


例外

指定されたオブジェクトが見つからない場合は、例外が発生します。