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配列を指定します。usersがNULLの場合、自動キャッシュはすべてのユーザーに対してグローバルに有効になります。 |
global_cache_size |
データベースの最大グローバル・キャッシュ割当て制限をバイト単位で指定します。 |
global_cache_pct |
グローバル・キャッシュ割当て制限を、最大データベース・サイズのパーセンテージで指定します。 |
使用上のノート
-
このプロシージャは、
AUTO_CACHEを設定して自動キャッシュを有効にします。 -
global_cache_sizeまたはglobal_cache_pctを指定すると、対応するグローバル割当て制限プロパティが設定されます。 -
global_cache_sizeもglobal_cache_pctも指定されていない場合、プロシージャはGLOBAL_CACHE_PERCENTを20に設定します。 -
自動キャッシュを無効にするには、
DBMS_CACHE.SET_GLOBAL_PROPERTYまたはDBMS_CACHE.SET_USER_PROPERTYをAUTO_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_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_SIZEとGLOBAL_CACHE_PERCENTの両方が設定されている場合は、大きい値が使用されます。どちらのグローバル割当て制限プロパティも明示的に設定されていない場合、GLOBAL_CACHE_PERCENTのデフォルトは20です。 -
MAX_CACHE_SIZEとMAX_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_SIZE、GLOBAL_CACHE_PERCENT、MAX_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_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_SIZEとGLOBAL_CACHE_PERCENTの両方が設定されている場合は、大きい値が使用されます。 -
どちらのグローバル割当て制限プロパティも明示的に設定されていない場合、
GLOBAL_CACHE_PERCENTのデフォルトは20です。 -
MAX_CACHE_SIZEとMAX_CACHE_PERCENTの両方が設定されている場合は、大きい値が使用されます。 -
どちらのデフォルトの割当て制限プロパティも明示的に設定されていない場合、
MAX_CACHE_PERCENTのデフォルトは20です。 -
MAX_CACHE_SIZEがGLOBAL_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 |
リフレッシュ・オプションを指定します。 有効な
このパラメータはオプションで、デフォルト値は |
例
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 |
プロパティ名を指定します。
|
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_SIZEとMAX_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_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_SIZEとMAX_CACHE_PERCENTの両方が設定されている場合は、大きい値が使用されます。 -
いずれのスキーマ・レベルの割当て制限プロパティも明示的に設定されていない場合、
MAX_CACHE_PERCENTのデフォルトは20です。 -
MAX_CACHE_SIZEがGLOBAL_CACHE_SIZEより大きい値に設定されている場合は、エラーが発生します。 -
手動ポリシーは、常に自動動作をオーバーライドします。