DBMS_CACHEパッケージ

DBMS_CACHEパッケージは、Autonomous AI Databaseインスタンスのレイク・キャッシュの自動キャッシュを容易にします。これには、外部表およびマウントされたカタログを介して公開される表に対して作成されたキャッシュが含まれます。

DBMS_CACHEサブプログラムの要約

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

サブプログラム 摘要
CLEARプロシージャ 指定されたユーザーのすべてのレイク・キャッシュをクリアします。
ENABLE_AUTOプロシージャ グローバルまたは1つ以上のスキーマに対して自動キャッシュを有効にし、オプションでGLOBAL_CACHE_SIZEまたはGLOBAL_CACHE_PERCENTを設定します。
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権限を持っている必要があります。

ENABLE_AUTOプロシージャ

DBMS_CACHE.ENABLE_AUTOプロシージャを使用して、グローバルまたは1つ以上のスキーマに対して自動キャッシュを有効にし、オプションでグローバル・キャッシュ割当て制限を設定します。

構文

DBMS_CACHE.ENABLE_AUTO (
    users             IN   CLOB   DEFAULT NULL,
    global_cache_size IN   NUMBER DEFAULT NULL,
    global_cache_pct  IN   NUMBER DEFAULT NULL
);

パラメータ

パラメータ 摘要
users スキーマ名を含むCLOB形式のJSON配列を指定します。usersNULLの場合、自動キャッシュはすべてのユーザーに対してグローバルに有効になります。
global_cache_size データベースの最大グローバル・キャッシュ割当て制限をバイト単位で指定します。
global_cache_pct グローバル・キャッシュ割当て制限を、最大データベース・サイズのパーセンテージで指定します。

使用上のノート

  • このプロシージャは、AUTO_CACHEを設定して自動キャッシュを有効にします。

  • global_cache_sizeまたはglobal_cache_pctを指定すると、対応するグローバル割当て制限プロパティが設定されます。

  • global_cache_sizeglobal_cache_pctも指定されていない場合、プロシージャはGLOBAL_CACHE_PERCENT20に設定します。

  • 自動キャッシュを無効にするには、DBMS_CACHE.SET_GLOBAL_PROPERTYまたはDBMS_CACHE.SET_USER_PROPERTYAUTO_CACHE = 0とともに使用します。

自動キャッシュをグローバルに有効にする例:

BEGIN
  DBMS_CACHE.ENABLE_AUTO(
    users            => NULL,
    global_cache_pct => 20);
END;
/

選択したスキーマの自動キャッシュを有効にする例:

DECLARE
  l_users CLOB := '["HR","SALES"]';
BEGIN
  DBMS_CACHE.ENABLE_AUTO(
    users             => l_users,
    global_cache_size => 21474836480);
END;
/

GET_GLOBAL_PROPERTYプロシージャ

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

構文

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

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

パラメータ

パラメータ 摘要
property_name

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

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

  • AUTO_CACHE: データベース・スコープの自動キャッシュを有効または無効にします。数値は、1および0です。デフォルト値は0です。

  • BEHAVIOR: 自動キャッシュ・ロード動作を制御します。文字列値は、AUTOAGGRESSIVEおよびCOOPERATIVEです。デフォルト値はAUTOです。

  • GLOBAL_CACHE_SIZE: データベースのグローバル・キャッシュ割当て制限をバイト単位で指定します。値-1は無制限の割当て制限を示します。-1は無制限の割当て制限を意味します。

  • GLOBAL_CACHE_PERCENT: 最大データベース・サイズの割合としてグローバル・キャッシュ割当て制限を指定します。

  • MAX_CACHE_SIZE: ユーザー・レベルのオーバーライドがないスキーマのデフォルトの最大キャッシュ・サイズをバイト単位で指定します。

  • MAX_CACHE_PERCENT: ユーザー・レベルのオーバーライドなしのスキーマに適用可能な割当てベースの割合として、デフォルトの最大キャッシュ・サイズを指定します。

  • MAX_REFRESH_WINDOW: レイク・キャッシュのリフレッシュに許可される最大時間ウィンドウを秒単位で指定します。

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

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

SET SERVEROUTPUT ON;
DECLARE
  l_auto_cache NUMBER;
BEGIN
  DBMS_CACHE.GET_GLOBAL_PROPERTY(
    property_name      => 'AUTO_CACHE',
    property_value_num => l_auto_cache);
  DBMS_OUTPUT.PUT_LINE('AUTO_CACHE=' || l_auto_cache);
END;
/

使用上のノート

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

  • GLOBAL_CACHE_SIZEおよびGLOBAL_CACHE_PERCENTは割当て制限のみを定義します。自動キャッシュは有効になりません。AUTO_CACHEまたはDBMS_CACHE.ENABLE_AUTOを使用して、自動キャッシュを有効にします。

  • GLOBAL_CACHE_SIZEGLOBAL_CACHE_PERCENTの両方が設定されている場合は、大きい値が使用されます。どちらのグローバル割当て制限プロパティも明示的に設定されていない場合、GLOBAL_CACHE_PERCENTのデフォルトは20です。

  • MAX_CACHE_SIZEMAX_CACHE_PERCENTの両方が設定されている場合は、大きい値が使用されます。どちらのデフォルトの割当て制限プロパティも明示的に設定されていない場合、MAX_CACHE_PERCENTのデフォルトは20です。

SET_GLOBAL_PROPERTYプロシージャ

DBMS_CACHE.SET_GLOBAL_PROPERTYを使用して、データベースのグローバル自動キャッシュ・プロパティを設定します。このプロシージャはオーバーロードされています。

AUTO_CACHEは、データベース・スコープの自動キャッシュを有効または無効にします。GLOBAL_CACHE_SIZEおよびGLOBAL_CACHE_PERCENTは、すべての外部表キャッシュのグローバル・キャッシュ割当てを定義します。MAX_CACHE_SIZEおよびMAX_CACHE_PERCENTは、ユーザー・レベルのオーバーライドがないスキーマのデフォルトのスキーマ・レベルの割当てプリファレンスを定義します。GLOBAL_CACHE_SIZEGLOBAL_CACHE_PERCENTMAX_CACHE_SIZEまたはMAX_CACHE_PERCENTを設定しても、自動キャッシュは有効になりません。

構文

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の有効な値は次のとおりです。

  • AUTO_CACHE: データベース・スコープの自動キャッシュを有効または無効にします。有効な数値は、1および0です。デフォルト値は0です。

  • BEHAVIOR: 自動キャッシュ・ロード動作を制御します。文字列値は、AUTOAGGRESSIVEおよびCOOPERATIVEです。デフォルト値はAUTOです。

  • GLOBAL_CACHE_SIZE: インスタンス全体のグローバル・キャッシュ割当てをバイト単位で指定します。-1は無制限の割当てを意味します。

  • GLOBAL_CACHE_PERCENT: インスタンス全体のグローバル・キャッシュ割当て制限を、最大データベース・サイズの割合として指定します。

  • MAX_CACHE_SIZE: ユーザー・レベルのオーバーライドがないスキーマのデフォルトの最大キャッシュ・サイズをバイト単位で指定します。

  • MAX_CACHE_PERCENT: ユーザー・レベルのオーバーライドなしのスキーマに適用可能な割当てベースの割合として、デフォルトの最大キャッシュ・サイズを指定します。

  • MAX_REFRESH_WINDOW: 外部表キャッシュのリフレッシュに許可される最大時間ウィンドウを秒単位で指定します。

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

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

BEGIN
  DBMS_CACHE.SET_GLOBAL_PROPERTY(
    property_name      => 'AUTO_CACHE',
    property_value_num => 1);
END;
/
BEGIN
  DBMS_CACHE.SET_GLOBAL_PROPERTY(
    property_name      => 'GLOBAL_CACHE_PERCENT',
    property_value_num => 20);
END;
/
BEGIN
  DBMS_CACHE.SET_GLOBAL_PROPERTY(
    property_name      => 'MAX_CACHE_PERCENT',
    property_value_num => 25);
END;
/
BEGIN
  DBMS_CACHE.SET_GLOBAL_PROPERTY(
    property_name      => 'BEHAVIOR',
    property_value_str => 'COOPERATIVE');
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権限を持っている必要があります。

  • GLOBAL_CACHE_SIZEGLOBAL_CACHE_PERCENTの両方が設定されている場合は、大きい値が使用されます。

  • どちらのグローバル割当て制限プロパティも明示的に設定されていない場合、GLOBAL_CACHE_PERCENTのデフォルトは20です。

  • MAX_CACHE_SIZEMAX_CACHE_PERCENTの両方が設定されている場合は、大きい値が使用されます。

  • どちらのデフォルトの割当て制限プロパティも明示的に設定されていない場合、MAX_CACHE_PERCENTのデフォルトは20です。

  • MAX_CACHE_SIZEGLOBAL_CACHE_SIZEより大きい値に設定されている場合は、エラーが発生します。

  • 手動キャッシュとAUTOキャッシュは、同じ割当てプールを消費します。

  • 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キャッシュは、Least Recently Used (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の有効な値は次のとおりです。

  • AUTO_CACHE: 指定したスキーマの自動キャッシュを有効または無効にします。有効な数値は1および0です。

  • MAX_CACHE_SIZE: スキーマ・レベルの最大キャッシュ・サイズをバイト単位で指定します。

  • MAX_CACHE_PERCENT: 適用可能な割当て制限ベースの割合として、スキーマ・レベルの最大キャッシュ・サイズを指定します。

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

owner スキーマ名を指定します。このパラメータはオプションで、現在のスキーマにデフォルト設定されます。
property_value_str 指定したプロパティ名のSTRING値を取り出します。
property_value_num 指定されたプロパティ名のNUMBER値を取得します。

SET SERVEROUTPUT ON;
DECLARE
  l_auto_cache NUMBER;
BEGIN
  DBMS_CACHE.GET_USER_PROPERTY(
    property_name      => 'AUTO_CACHE',
    owner              => 'HR',
    property_value_num => l_auto_cache);
  DBMS_OUTPUT.PUT_LINE('AUTO_CACHE=' || l_auto_cache);
END;
/

使用上のノート

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

  • MAX_CACHE_SIZEおよびMAX_CACHE_PERCENTは、スキーマ・レベルの割当て制限制御です。自動キャッシュは、単独では有効になりません。AUTO_CACHEを使用して、指定したスキーマの自動キャッシュを有効または無効にします。

  • MAX_CACHE_SIZEMAX_CACHE_PERCENTの両方が設定されている場合は、大きい値が使用されます。いずれのスキーマ・レベルの割当て制限プロパティも明示的に設定されていない場合、MAX_CACHE_PERCENTのデフォルトは20です。

SET_USER_PROPERTYプロシージャ

DBMS_CACHE.SET_USER_PROPERTYを使用して、指定したスキーマの自動キャッシュ・プロパティを設定します。AUTO_CACHEを使用して、スキーマの自動キャッシュを有効または無効にします。MAX_CACHE_SIZEおよびMAX_CACHE_PERCENTを使用して、グローバル割当てモデル内でスキーマ・レベルの割当てプリファレンスを設定します。

構文

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   VARCHAR2,
    owner               IN   VARCHAR2 DEFAULT NULL
);

パラメータ

パラメータ 摘要
property_name

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

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

  • AUTO_CACHE: 指定したスキーマの自動キャッシュを有効または無効にします。有効な数値は1および0です。

  • MAX_CACHE_SIZE: スキーマ・レベルの最大キャッシュ・サイズをバイト単位で指定します。

  • MAX_CACHE_PERCENT: 適用可能な割当て制限ベースの割合として、スキーマ・レベルの最大キャッシュ・サイズを指定します。

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

    AUTO_REFRESH_MODEの有効な値は次のとおりです。

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

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

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

property_value_num 指定されたプロパティ名のNUMBER値を指定します。
property_value_str 指定されたプロパティ名のSTRING値を指定します。
owner スキーマ名を指定します。このパラメータはオプションで、現在のスキーマにデフォルト設定されます。

スキーマの自動キャッシュを有効にする例:

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

スキーマ・レベルのキャッシュ割当て制限を設定する例:

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

使用上のノート

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

  • ユーザーレベルの設定はグローバル設定をオーバーライドします。

  • MAX_CACHE_SIZEおよびMAX_CACHE_PERCENTは、自動キャッシュを単独で有効にしません。

  • MAX_CACHE_SIZEMAX_CACHE_PERCENTの両方が設定されている場合は、大きい値が使用されます。

  • いずれのスキーマ・レベルの割当て制限プロパティも明示的に設定されていない場合、MAX_CACHE_PERCENTのデフォルトは20です。

  • MAX_CACHE_SIZEGLOBAL_CACHE_SIZEより大きい値に設定されている場合は、エラーが発生します。

  • 手動ポリシーは、常に自動動作をオーバーライドします。