Paquete DBMS_CACHE
El paquete DBMS_CACHE facilita el almacenamiento en caché automático para las cachés de lago en una instancia de base de datos de IA autónoma, incluidas las cachés creadas para tablas externas y para tablas expuestas a través de catálogos montados.
Resumen de Subprogramas DBMS_CACHE
En esta tabla se resumen los subprogramas incluidos en el paquete DBMS_CACHE.
| Subprograma | Descripción |
|---|---|
| Procedimiento CLEAR | Borra todas las cachés de lago para un usuario especificado. |
| Procedimiento ENABLE_AUTO | Activa el almacenamiento en caché automático global o para uno o más esquemas y, opcionalmente, define GLOBAL_CACHE_SIZE o GLOBAL_CACHE_PERCENT. |
| Procedimiento GET_GLOBAL_PROPERTY | Recupera las propiedades automáticas de la caché de lago. |
| Procedimiento GET_USER_PROPERTY | Recupera las propiedades automáticas de la caché de lago para un usuario especificado. |
| Procedimiento REFRESH | Refresca todas las cachés de lago para un usuario especificado. |
| Procedimiento SET_GLOBAL_PROPERTY | Especifica la preferencia de caché de lago automática para todos los usuarios de la base de datos. |
| Procedimiento SET_USER_PROPERTY | Especifica la preferencia de caché de lago automática para un usuario especificado. |
Procedimiento CLEAR
Utilice el procedimiento DBMS_CACHE.CLEAR para borrar todas las cachés de lago para un usuario especificado.
El procedimiento DBMS_CACHE.CLEAR borra todas las cachés de lago y libera el espacio de almacenamiento, de forma similar a cómo funciona el comando DROP en una tabla de base de datos.
Sintaxis
DBMS_CACHE.CLEAR (
owner IN VARCHAR2
);Parámetros
| Parámetro | Descripción |
|---|---|
owner |
Especifica el nombre del esquema. |
Ejemplo
BEGIN
DBMS_CACHE.CLEAR (
owner => 'SALES');
END;
/Nota de uso
- Debe estar conectado como usuario
ADMINo tener el privilegioEXECUTEen el paqueteDBMS_CACHEpara borrar una caché.
Procedimiento ENABLE_AUTO
Utilice el procedimiento DBMS_CACHE.ENABLE_AUTO para activar el almacenamiento en caché automático global o para uno o más esquemas y, opcionalmente, defina la cuota de caché global.
Sintaxis
DBMS_CACHE.ENABLE_AUTO (
users IN CLOB DEFAULT NULL,
global_cache_size IN NUMBER DEFAULT NULL,
global_cache_pct IN NUMBER DEFAULT NULL
);Parámetros
| Parámetro | Descripción |
|---|---|
users |
Especifica una matriz de JSON en formato CLOB que contiene nombres de esquema. Si users es NULL, el almacenamiento en caché automático se activa globalmente para todos los usuarios. |
global_cache_size |
Especifica la cuota máxima de caché global, en bytes, para la base de datos. |
global_cache_pct |
Especifica la cuota de caché global como porcentaje del tamaño máximo de la base de datos. |
Notas de uso
-
El procedimiento activa el almacenamiento en caché automático definiendo
AUTO_CACHE. -
Si se proporciona
global_cache_sizeoglobal_cache_pct, el procedimiento define la propiedad de cuota global correspondiente. -
Si no se proporciona
global_cache_sizeniglobal_cache_pct, el procedimiento defineGLOBAL_CACHE_PERCENTen20. -
Utilice
DBMS_CACHE.SET_GLOBAL_PROPERTYoDBMS_CACHE.SET_USER_PROPERTYconAUTO_CACHE = 0para desactivar el almacenamiento en caché automático.
Ejemplos
Ejemplo para activar el almacenamiento en caché automático de forma global:
BEGIN
DBMS_CACHE.ENABLE_AUTO(
users => NULL,
global_cache_pct => 20);
END;
/Ejemplo para activar el almacenamiento en caché automático para los esquemas seleccionados:
DECLARE
l_users CLOB := '["HR","SALES"]';
BEGIN
DBMS_CACHE.ENABLE_AUTO(
users => l_users,
global_cache_size => 21474836480);
END;
/GET_GLOBAL_PROPERTY Procedimiento
El procedimiento DBMS_CACHE.GET_GLOBAL_PROPERTY recupera las preferencias automáticas de la caché de lago para todos los usuarios de la base de datos. Este procedimiento está sobrecargado.
Sintaxis
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);Parámetros
| Parámetro | Descripción |
|---|---|
property_name |
Especifica el nombre de la propiedad. A continuación, se muestran los valores válidos para
|
property_value_num |
Recupera un valor NUMBER para el nombre de propiedad especificado. |
property_value_str |
Recupera un valor STRING para el nombre de propiedad especificado. |
Ejemplo
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;
/Notas de uso
-
Debe estar conectado como usuario
ADMINo tener el privilegioEXECUTEen el paqueteDBMS_CACHEpara ejecutar este procedimiento. -
GLOBAL_CACHE_SIZEyGLOBAL_CACHE_PERCENTdefinen solo la cuota. No activan el almacenamiento en caché automático. UtiliceAUTO_CACHEoDBMS_CACHE.ENABLE_AUTOpara activar el almacenamiento en caché automático. -
Si se definen
GLOBAL_CACHE_SIZEyGLOBAL_CACHE_PERCENT, se utiliza el valor más grande. Si ninguna de las propiedades de cuota global está definida explícitamente,GLOBAL_CACHE_PERCENTse define por defecto en20. -
Si se definen
MAX_CACHE_SIZEyMAX_CACHE_PERCENT, se utiliza el valor más grande. Si no se define explícitamente ninguna propiedad de cuota por defecto,MAX_CACHE_PERCENTse define por defecto en20.
SET_GLOBAL_PROPERTY Procedimiento
Utilice DBMS_CACHE.SET_GLOBAL_PROPERTY para definir propiedades de caché automática global para la base de datos. Este procedimiento está sobrecargado.
AUTO_CACHE activa o desactiva el almacenamiento en caché automático en el ámbito de la base de datos. GLOBAL_CACHE_SIZE y GLOBAL_CACHE_PERCENT definen la cuota de caché global para todas las cachés de tablas externas. MAX_CACHE_SIZE y MAX_CACHE_PERCENT definen las preferencias de cuota de nivel de esquema por defecto para los esquemas que no tienen una sustitución de nivel de usuario. La definición de GLOBAL_CACHE_SIZE, GLOBAL_CACHE_PERCENT, MAX_CACHE_SIZE o MAX_CACHE_PERCENT no activa, por sí sola, el almacenamiento en caché automático.
Sintaxis
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);Parámetros
| Parámetro | Descripción |
|---|---|
property_name |
Especifica el nombre de la propiedad. A continuación, se muestran los valores válidos para
|
property_value_num |
Proporciona un valor NUMBER para el nombre de propiedad especificado. |
property_value_str |
Proporciona un valor STRING para el nombre de propiedad especificado. |
Ejemplos
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;
/Notas de uso
-
Debe estar conectado como usuario
ADMINo tener el privilegioEXECUTEen el paqueteDBMS_CACHEpara ejecutar este procedimiento. -
Si se definen
GLOBAL_CACHE_SIZEyGLOBAL_CACHE_PERCENT, se utiliza el valor más grande. -
Si ninguna de las propiedades de cuota global está definida explícitamente,
GLOBAL_CACHE_PERCENTse define por defecto en20. -
Si se definen
MAX_CACHE_SIZEyMAX_CACHE_PERCENT, se utiliza el valor más grande. -
Si no se define explícitamente ninguna propiedad de cuota por defecto,
MAX_CACHE_PERCENTse define por defecto en20. -
Si
MAX_CACHE_SIZEestá definido en un valor mayor queGLOBAL_CACHE_SIZE, la base de datos genera un error. -
Las cachés manuales y las cachés
AUTOconsumen el mismo pool de cuotas. -
La propiedad
MAX_REFRESH_WINDOWespecifica, en segundos, el tiempo máximo permitido para refrescar las cachés de lago. Si el refrescamiento supera el límite especificado, el refrescamiento de caché se cierra normalmente y las cachés elegibles restantes se ponen en cola para el siguiente ciclo de refrescamiento. -
Al refrescar las cachés mediante el procedimiento
DBMS_CACHE.REFRESH, el parámetro de procedimiento tiene prioridad sobre la propiedadAUTO_REFRESH_MODE.Consulte Procedimiento REFRESH para obtener más información.
Procedimiento REFRESH
Utilice el procedimiento DBMS_CACHE.REFRESH para refrescar todas las cachés de lago AUTO para un usuario especificado.
Sintaxis
DBMS_CACHE.REFRESH (
owner IN VARCHAR2,
refresh_type IN VARCHAR2 DEFAULT ALL
);Parámetros
| Parámetro | Descripción |
|---|---|
owner |
Especifica el nombre del esquema. |
refresh_type |
Especifica la opción de refrescamiento. A continuación se muestran los valores válidos de
Este parámetro es opcional y se define por defecto en |
Ejemplo
BEGIN
DBMS_CACHE.REFRESH (
owner => 'SALES',
refresh_type => 'CURRENT');
END;
/Notas de uso
-
Debe estar conectado como usuario
ADMINo tener el privilegioEXECUTEen el paqueteDBMS_CACHEpara ejecutar este procedimiento. -
Si no especifica un valor para el parámetro
refresh_type, Oracle realiza el refrescamiento basado en el valorauto_refresh_mode. El valor por defecto paraauto_refresh_modeesALL. -
Cuando se define la propiedad
MAX_REFRESH_WINDOW, Oracle intenta realizar el refrescamiento en la ventana especificada. Si el refrescamiento supera el límite especificado, el refrescamiento de caché se cierra normalmente y las cachés elegibles restantes se ponen en cola para el siguiente ciclo de refrescamiento. -
Todas las cachés AUTO de la base de datos se gestionan mediante un algoritmo de expulsión similar al de menos utilizados recientemente (LRU). Cuando hay presión de espacio, las cachés a las que se ha accedido menos recientemente se borran automáticamente durante el proceso de refrescamiento para liberar el espacio de almacenamiento.
GET_USER_PROPERTY Procedimiento
Utilice el procedimiento DBMS_CACHE.GET_USER_PROPERTY para recuperar propiedades de almacenamiento en caché automático para un usuario.
Sintaxis
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);Parámetros
| Parámetro | Descripción |
|---|---|
property_name |
Especifica el nombre de la propiedad. A continuación, se muestran los valores válidos para
|
owner |
Especifica el nombre del esquema. Este parámetro es opcional y se define por defecto en el esquema actual. |
property_value_str |
Recupera un valor STRING para el nombre de propiedad especificado. |
property_value_num |
Recupera un valor NUMBER para el nombre de propiedad especificado. |
Ejemplo
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;
/Notas de uso
-
Debe estar conectado como usuario
ADMINo tener el privilegioEXECUTEen el paqueteDBMS_CACHEpara ejecutar este procedimiento. -
MAX_CACHE_SIZEyMAX_CACHE_PERCENTson controles de cuota de nivel de esquema. No activan el almacenamiento en caché automático por sí mismos. UtiliceAUTO_CACHEpara activar o desactivar el almacenamiento en caché automático para el esquema especificado. -
Si se definen
MAX_CACHE_SIZEyMAX_CACHE_PERCENT, se utiliza el valor más grande. Si no se define explícitamente ninguna propiedad de cuota de nivel de esquema,MAX_CACHE_PERCENTse define por defecto en20.
SET_USER_PROPERTY Procedimiento
Utilice DBMS_CACHE.SET_USER_PROPERTY para definir propiedades de caché automática para un esquema especificado. Utilice AUTO_CACHE para activar o desactivar el almacenamiento en caché automático para el esquema. Utilice MAX_CACHE_SIZE y MAX_CACHE_PERCENT para definir las preferencias de cuota de nivel de esquema en el modelo de cuota global.
Sintaxis
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
);Parámetros
| Parámetro | Descripción |
|---|---|
property_name |
Especifica el nombre de la propiedad. A continuación, se muestran los valores válidos para
|
property_value_num |
Proporciona un valor NUMBER para el nombre de propiedad especificado. |
property_value_str |
Proporciona un valor STRING para el nombre de propiedad especificado. |
owner |
Especifica el nombre del esquema. Este parámetro es opcional y se define por defecto en el esquema actual. |
Ejemplos
Ejemplo para activar el almacenamiento en caché automático para un esquema:
BEGIN
DBMS_CACHE.SET_USER_PROPERTY(
property_name => 'AUTO_CACHE',
property_value_num => 1,
owner => 'SALES');
END;
/Ejemplo para definir una cuota de caché de nivel de esquema:
BEGIN
DBMS_CACHE.SET_USER_PROPERTY(
property_name => 'MAX_CACHE_SIZE',
property_value_num => 5368709120,
owner => 'SALES');
END;
/Notas de uso
-
Debe estar conectado como usuario
ADMINo tener el privilegioEXECUTEen el paqueteDBMS_CACHEpara ejecutar este procedimiento. -
La configuración de nivel de usuario sustituye la configuración global.
-
MAX_CACHE_SIZEyMAX_CACHE_PERCENTno activan el almacenamiento en caché automático por sí mismos. -
Si se definen
MAX_CACHE_SIZEyMAX_CACHE_PERCENT, se utiliza el valor más grande. -
Si no se define explícitamente ninguna propiedad de cuota de nivel de esquema,
MAX_CACHE_PERCENTse define por defecto en20. -
Si
MAX_CACHE_SIZEestá definido en un valor mayor queGLOBAL_CACHE_SIZE, la base de datos genera un error. -
La política manual siempre sustituye el comportamiento automático.