DBMS_CACHEパッケージ

DBMS_CACHEパッケージを使用すると、自律型AIデータベース・インスタンス内の外部表キャッシュの自動キャッシュが容易になります。

DBMS_CACHEサブプログラムの要約

この表は、DBMS_CACHEパッケージに含まれるサブプログラムの概要を示しています。

サブプログラム 摘要

CLEARプロシージャ

指定されたユーザーのすべての外部表キャッシュをクリアします。

GET_GLOBAL_PROPERTYプロシージャ

外部表キャッシュ・プロパティを取得します。

GET_USER_PROPERTYプロシージャ

指定されたユーザーの外部表キャッシュ・プロパティを取得します。

REFRESHプロシージャ

指定されたユーザーのすべての外部表キャッシュをリフレッシュします。

SET_GLOBAL_PROPERTYプロシージャ

すべてのデータベース・ユーザーの外部表キャッシュ・プリファレンスを指定します。

SET_USER_PROPERTYプロシージャ

指定されたユーザーの外部表キャッシュ・プリファレンスを指定します。

CLEARプロシージャ

DBMS_CACHE.CLEARプロシージャを使用して、指定したユーザーのすべての外部表キャッシュを削除します。

DBMS_CACHE.CLEARプロシージャは、DROPコマンドがデータベース表に対してどのように機能するかと同様に、すべての外部表キャッシュを削除し、記憶域を解放します。

構文

DBMS_CACHE.CLEAR (
    owner    IN   VARCHAR2
);

パラメータ

パラメータ 摘要

owner

スキーマ名を指定します。

BEGIN
 DBMS_CACHE.CLEAR (
    owner => 'SALES');                                                                
END;                                                                 
/

使用上のノート

  • キャッシュをクリアするには、ADMINユーザーとしてログインするか、DBMS_CACHEパッケージに対するEXECUTE権限を持っている必要があります。

GET_GLOBAL_PROPERTYプロシージャ

DBMS_CACHE.GET_GLOBAL_PROPERTYプロシージャは、データベース内のすべてのユーザーの外部表キャッシュ・プリファレンスを取得します。このプロシージャはオーバーロードされています。

構文

DBMS_CACHE.GET_GLOBAL_PROPERTY (
    property_name       IN   VARCHAR2,
    property_value_num  OUT  VARCHAR2);

DBMS_CACHE.GET_GLOBAL_PROPERTY (
    property_name       IN   VARCHAR2,
    property_value_str  OUT  VARCHAR2);

パラメータ

パラメータ 摘要

property_name

プロパティ名を指定します。

property_nameの有効な値は次のとおりです。
  • MAX_CACHE_PERCENT

  • MAX_CACHE_SIZE

  • MAX_REFRESH_WINDOW

  • AUTO_REFRESH_MODE

property_value_num

指定されたプロパティ名のNUMBER値を取得します。

property_value_str

指定されたプロパティ名のSTRING値を取得します。

SET SERVEROUTPUT ON;
DECLARE
   cache_property NUMBER;
BEGIN
   DBMS_CACHE.GET_GLOBAL_PROPERTY (
      property_name  => 'MAX_CACHE_SIZE',
      property_value => cache_property
   );
 DBMS_OUTPUT.PUT_LINE('MAX_CACHE_SIZE = ' || cache_property);
END;
/

使用上のノート

  • このプロシージャを実行するには、ADMINユーザーとしてログインするか、DBMS_CACHEパッケージに対するEXECUTE権限を持っている必要があります。

SET_GLOBAL_PROPERTYプロシージャ

DBMS_CACHE.SET_GLOBAL_PROPERTYプロシージャを使用して、データベースの自動キャッシュを有効にするユーザーを含め、すべてのデータベース・ユーザーのAUTOキャッシュ・プロパティを設定します。このプロシージャはオーバーロードされています。

デフォルトでは、外部表の自動キャッシュは無効になっています。これを有効にするには、DBMS_CACHE.SET_GLOBAL_PROPERTYプロシージャのMAX_CACHE_SIZEまたはMAX_CACHE_SIZEプロパティを使用して、キャッシュ・サイズをゼロ以外の値に設定します。これにより、データベースの自動キャッシュがグローバルに有効になります。

構文


DBMS_CACHE.SET_GLOBAL_PROPERTY (
    property_name      IN   VARCHAR2,
    property_value_num IN   NUMBER);

DBMS_CACHE.SET_GLOBAL_PROPERTY (
    property_name      IN   VARCHAR2,
    property_value_str IN   VARCHAR2);

パラメータ

パラメータ 摘要

property_name

プロパティ名を指定します。

property_nameの有効な値は次のとおりです。
  • MAX_CACHE_PERCENT: MAX_CACHE_PERCENTプロパティは、外部表キャッシュに使用できるユーザーの割当て済記憶域割当て容量の最大割合を指定します。

  • MAX_CACHE_SIZE: MAX_CACHE_SIZEプロパティは、ユーザーが外部表キャッシュに使用できる記憶域の最大量をバイト単位で指定します。

  • MAX_REFRESH_WINDOW: プロパティのMAX_REFRESH_WINDOWは、外部表キャッシュのリフレッシュに許可される最大時間ウィンドウ(秒)を指定します。

  • AUTO_REFRESH_MODE: AUTOキャッシュに対してリフレッシュが実行されるスコープを指定します。

    AUTO_REFRESH_MODEの有効な値は次のとおりです。
    • ALL: データベース内のすべての既存のAUTOキャッシュがリフレッシュされ、必要に応じて新しいキャッシュが作成されます。これはデフォルト値です。

    • CURRENT: 既存のキャッシュのみがリフレッシュされ、新しいキャッシュは追加されません。

    • NEW: 新しいキャッシュのみが作成されます。

property_value_num

指定されたプロパティ名のNUMBER値を指定します。

property_value_str

指定されたプロパティ名のSTRING値を指定します。

BEGIN
 DBMS_CACHE.SET_GLOBAL_PROPERTY (
    property_name       => 'MAX_CACHE_SIZE', 
    property_value_num  => 50);                                                                
END;                                                                 
/
BEGIN
 DBMS_CACHE.SET_GLOBAL_PROPERTY (
    property_name       => 'AUTO_REFRESH_MODE', 
    property_value_str  => 'NEW');                                                              
END;                                                                 
/
BEGIN
 DBMS_CACHE.SET_GLOBAL_PROPERTY (
    property_name       => 'MAX_REFRESH_WINDOW', 
    property_value_num  => 20);                                                              
END;                                                                 
/

使用上のノート

  • このプロシージャを実行するには、ADMINユーザーとしてログインするか、DBMS_CACHEパッケージに対するEXECUTE権限を持っている必要があります。

  • MAX_REFRESH_WINDOWプロパティは、外部表キャッシュのリフレッシュに許可される最大時間を秒単位で指定します。リフレッシュが指定の制限を超えた場合、キャッシュ・リフレッシュは正常に終了し、残りの適格キャッシュは次のリフレッシュ・サイクルでキューに入れられます。

  • DBMS_CACHE.REFRESHプロシージャを使用してキャッシュをリフレッシュする場合、プロシージャ・パラメータはAUTO_REFRESH_MODEプロパティより優先されます。

    詳細は、REFRESHプロシージャを参照してください。

REFRESHプロシージャ

DBMS_CACHE.REFRESHプロシージャを使用して、指定したユーザーのAUTO外部表キャッシュをすべてリフレッシュします。

構文

DBMS_CACHE.REFRESH (       
      owner          IN VARCHAR2,
      refresh_type   IN VARCHAR2 DEFAULT ALL
);

パラメータ

パラメータ 摘要

owner

スキーマ名を指定します。

refresh_type

リフレッシュ・オプションを指定します。

有効なrefresh_type値は次のとおりです。
  • ALL: 指定されたスキーマの既存のすべてのAUTOキャッシュがリフレッシュされ、必要に応じて、指定されたユーザーに対して新しいキャッシュが作成されます。これはデフォルト値です。

  • CURRENT: 既存のキャッシュのみがリフレッシュされ、指定されたユーザーに対して新しいキャッシュは追加されません。

  • NEW: 指定されたユーザーに対して新規キャッシュのみが作成されます。

このパラメータはオプションで、デフォルト値はALLです。

BEGIN
    DBMS_CACHE.REFRESH (      
      owner          => 'SALES',
      refresh_type   => 'CURRENT');                                                                 
END;                                                                 
/

使用上のノート

  • このプロシージャを実行するには、ADMINユーザーとしてログインするか、DBMS_CACHEパッケージに対するEXECUTE権限を持っている必要があります。

  • refresh_typeパラメータの値を指定しない場合、Oracleはauto_refresh_mode値に基づいてリフレッシュを実行します。auto_refresh_modeのデフォルト値はALLです。

  • MAX_REFRESH_WINDOWプロパティが設定されている場合、Oracleは指定したウィンドウでリフレッシュを実行しようとします。リフレッシュが指定の制限を超えた場合、キャッシュ・リフレッシュは正常に終了し、残りの適格キャッシュは次のリフレッシュ・サイクルでキューに入れられます。

  • データベース内のすべてのAUTOキャッシュは、最低使用頻度(LRU)に類似した削除アルゴリズムを使用して管理されます。領域が不足すると、最近アクセスされたキャッシュは、リフレッシュ・プロセス中に自動的に削除され、記憶域が解放されます。

GET_USER_PROPERTYプロシージャ

DBMS_CACHE.GET_USER_PROPERTYプロシージャを使用して、ユーザーの自動キャッシュ・プロパティを取得します。

構文

DBMS_CACHE.GET_USER_PROPERTY (
    property_name      IN   VARCHAR2,
    owner              IN   VARCHAR2 DEFAULT NULL,
    property_value_str OUT  VARCHAR2);

DBMS_CACHE.GET_USER_PROPERTY (
    property_name      IN   VARCHAR2,
    owner              IN   VARCHAR2 DEFAULT NULL,
    property_value_num OUT  NUMBER);

パラメータ

パラメータ 摘要

property_name

プロパティ名を指定します。

property_nameの有効な値は次のとおりです。
  • MAX_CACHE_PERCENT

  • MAX_CACHE_SIZE

  • AUTO_REFRESH_MODE

owner

スキーマ名を指定します。このパラメータはオプションで、現在のスキーマにデフォルト設定されます。

property_value_str

指定されたプロパティ名のSTRING値を取得します。

property_value_num

指定されたプロパティ名のNUMBER値を取得します。

SET SERVEROUTPUT ON;
DECLARE
   cache_property NUMBER;
BEGIN
   DBMS_CACHE.GET_USER_PROPERTY (
      property_name  => 'MAX_CACHE_SIZE',
      owner          => NULL,
      property_value => cache_property
   );
 DBMS_OUTPUT.PUT_LINE('MAX_CACHE_SIZE = ' || cache_property);
END;
/

使用上のノート

  • このプロシージャを実行するには、ADMINユーザーとしてログインするか、DBMS_CACHEパッケージに対するEXECUTE権限を持っている必要があります。

SET_USER_PROPERTYプロシージャ

DBMS_CACHE.SET_USER_PROPERTYプロシージャを使用して、指定したスキーマのAUTOキャッシュ・プロパティ(スキーマの自動キャッシュを有効にするプロパティを含む)を設定します。このプロシージャはオーバーロードされています。

構文

DBMS_CACHE.SET_USER_PROPERTY (
    property_name       IN   VARCHAR2,
    property_value_num  IN   NUMBER,
    owner               IN   VARCHAR2 DEFAULT NULL);

DBMS_CACHE.SET_USER_PROPERTY (
    property_name       IN   VARCHAR2,
    property_value_str  IN   NUMBER,    
    owner               IN   VARCHAR2 DEFAULT NULL
);

パラメータ

パラメータ 摘要

property_name

プロパティ名を指定します。

property_nameの有効な値は次のとおりです。
  • MAX_CACHE_PERCENT

  • MAX_CACHE_SIZE

  • AUTO_REFRESH_MODE: AUTOキャッシュに対してリフレッシュが実行されるスコープを指定します。

    AUTO_REFRESH_MODEの有効な値は次のとおりです。
    • ALL: スキーマ内のすべての既存のAUTOキャッシュがリフレッシュされ、必要に応じて、指定したユーザーに対して新しいキャッシュが作成されます。これはデフォルト値です。

    • CURRENT: 既存のキャッシュのみがリフレッシュされ、指定されたユーザーに対して新しいキャッシュは追加されません。

    • NEW: 指定されたユーザーに対して新規キャッシュのみが作成されます。

property_value_num

指定されたプロパティ名のNUMBER値を指定します。

property_value_str

指定されたプロパティ名のSTRING値を指定します。

owner

スキーマ名を指定します。このパラメータはオプションで、現在のスキーマにデフォルト設定されます。

BEGIN
 DBMS_CACHE.SET_USER_PROPERTY (
        property_name       => 'MAX_CACHE_SIZE', 
        property_value_num  => 50,
        owner               => 'SALES');                                                                
END;                                                                 
/

使用上のノート

  • このプロシージャを実行するには、ADMINユーザーとしてログインするか、DBMS_CACHEパッケージに対するEXECUTE権限を持っている必要があります。