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 ADMIN o tener el privilegio EXECUTE en el paquete DBMS_CACHE para 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_size o global_cache_pct, el procedimiento define la propiedad de cuota global correspondiente.

  • Si no se proporciona global_cache_size ni global_cache_pct, el procedimiento define GLOBAL_CACHE_PERCENT en 20.

  • Utilice DBMS_CACHE.SET_GLOBAL_PROPERTY o DBMS_CACHE.SET_USER_PROPERTY con AUTO_CACHE = 0 para 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_name:

  • AUTO_CACHE: activa o desactiva el almacenamiento en caché automático en el ámbito de la base de datos. Los valores numéricos son 1 y 0. El valor por defecto es 0.

  • BEHAVIOR: controla el comportamiento de carga automática de la caché. Los valores de cadena son AUTO, AGGRESSIVE y COOPERATIVE. El valor por defecto es AUTO.

  • GLOBAL_CACHE_SIZE: especifica la cuota de caché global, en bytes, para la base de datos. El valor -1 indica una cuota ilimitada. -1 significa cuota ilimitada.

  • GLOBAL_CACHE_PERCENT: especifica la cuota de caché global como porcentaje del tamaño máximo de la base de datos.

  • MAX_CACHE_SIZE: especifica el tamaño máximo de caché por defecto en bytes para los esquemas sin una sustitución de nivel de usuario.

  • MAX_CACHE_PERCENT: especifica el tamaño máximo de caché por defecto como porcentaje de la base de cuota aplicable para los esquemas sin una sustitución de nivel de usuario.

  • MAX_REFRESH_WINDOW: especifica la ventana de tiempo máxima, en segundos, permitida para refrescar las cachés de lago.

  • AUTO_REFRESH_MODE: especifica el ámbito en el que se realiza el refrescamiento para las cachés AUTO.

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 ADMIN o tener el privilegio EXECUTE en el paquete DBMS_CACHE para ejecutar este procedimiento.

  • GLOBAL_CACHE_SIZE y GLOBAL_CACHE_PERCENT definen solo la cuota. No activan el almacenamiento en caché automático. Utilice AUTO_CACHE o DBMS_CACHE.ENABLE_AUTO para activar el almacenamiento en caché automático.

  • Si se definen GLOBAL_CACHE_SIZE y GLOBAL_CACHE_PERCENT, se utiliza el valor más grande. Si ninguna de las propiedades de cuota global está definida explícitamente, GLOBAL_CACHE_PERCENT se define por defecto en 20.

  • Si se definen MAX_CACHE_SIZE y MAX_CACHE_PERCENT, se utiliza el valor más grande. Si no se define explícitamente ninguna propiedad de cuota por defecto, MAX_CACHE_PERCENT se define por defecto en 20.

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_name:

  • AUTO_CACHE: activa o desactiva el almacenamiento en caché automático en el ámbito de la base de datos. Los valores numéricos válidos son 1 y 0. El valor por defecto es 0.

  • BEHAVIOR: controla el comportamiento de carga automática de la caché. Los valores de cadena son AUTO, AGGRESSIVE y COOPERATIVE. El valor por defecto es AUTO.

  • GLOBAL_CACHE_SIZE: especifica la cuota de caché global de toda la instancia en bytes. -1 significa cuota ilimitada.

  • GLOBAL_CACHE_PERCENT: especifica la cuota de caché global de toda la instancia como porcentaje del tamaño máximo de la base de datos.

  • MAX_CACHE_SIZE: especifica el tamaño máximo de caché por defecto en bytes para los esquemas sin una sustitución de nivel de usuario.

  • MAX_CACHE_PERCENT: especifica el tamaño máximo de caché por defecto como porcentaje de la base de cuota aplicable para los esquemas sin una sustitución de nivel de usuario.

  • MAX_REFRESH_WINDOW: especifica la ventana de tiempo máxima, en segundos, permitida para refrescar las cachés de tablas externas.

  • AUTO_REFRESH_MODE: especifica el ámbito en el que se realiza el refrescamiento para las cachés AUTO.

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 ADMIN o tener el privilegio EXECUTE en el paquete DBMS_CACHE para ejecutar este procedimiento.

  • Si se definen GLOBAL_CACHE_SIZE y GLOBAL_CACHE_PERCENT, se utiliza el valor más grande.

  • Si ninguna de las propiedades de cuota global está definida explícitamente, GLOBAL_CACHE_PERCENT se define por defecto en 20.

  • Si se definen MAX_CACHE_SIZE y MAX_CACHE_PERCENT, se utiliza el valor más grande.

  • Si no se define explícitamente ninguna propiedad de cuota por defecto, MAX_CACHE_PERCENT se define por defecto en 20.

  • Si MAX_CACHE_SIZE está definido en un valor mayor que GLOBAL_CACHE_SIZE, la base de datos genera un error.

  • Las cachés manuales y las cachés AUTO consumen el mismo pool de cuotas.

  • La propiedad MAX_REFRESH_WINDOW especifica, 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 propiedad AUTO_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 refresh_type:

  • ALL: se refrescan todas las cachés AUTO existentes para el esquema especificado y, si es necesario, se crean nuevas cachés para el usuario especificado. Éste es el valor por defecto.

  • CURRENT: solo se refrescan las cachés existentes, no se agregan nuevas cachés para el usuario especificado.

  • NEW: solo se crean nuevas cachés para el usuario especificado.

Este parámetro es opcional y se define por defecto en ALL.

Ejemplo

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

Notas de uso

  • Debe estar conectado como usuario ADMIN o tener el privilegio EXECUTE en el paquete DBMS_CACHE para ejecutar este procedimiento.

  • Si no especifica un valor para el parámetro refresh_type, Oracle realiza el refrescamiento basado en el valor auto_refresh_mode. El valor por defecto para auto_refresh_mode es ALL.

  • 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 property_name:

  • AUTO_CACHE: activa o desactiva el almacenamiento en caché automático para el esquema especificado. Los valores numéricos válidos son 1 y 0.

  • MAX_CACHE_SIZE: especifica el tamaño máximo de caché de nivel de esquema en bytes.

  • MAX_CACHE_PERCENT: especifica el tamaño máximo de caché de nivel de esquema como porcentaje de la base de cuota aplicable.

  • AUTO_REFRESH_MODE: especifica el ámbito en el que se realiza el refrescamiento para las cachés AUTO.

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 ADMIN o tener el privilegio EXECUTE en el paquete DBMS_CACHE para ejecutar este procedimiento.

  • MAX_CACHE_SIZE y MAX_CACHE_PERCENT son controles de cuota de nivel de esquema. No activan el almacenamiento en caché automático por sí mismos. Utilice AUTO_CACHE para activar o desactivar el almacenamiento en caché automático para el esquema especificado.

  • Si se definen MAX_CACHE_SIZE y MAX_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_PERCENT se define por defecto en 20.

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_name:

  • AUTO_CACHE: activa o desactiva el almacenamiento en caché automático para el esquema especificado. Los valores numéricos válidos son 1 y 0.

  • MAX_CACHE_SIZE: especifica el tamaño máximo de caché de nivel de esquema en bytes.

  • MAX_CACHE_PERCENT: especifica el tamaño máximo de caché de nivel de esquema como porcentaje de la base de cuota aplicable.

  • AUTO_REFRESH_MODE: especifica el ámbito en el que se realiza el refrescamiento para las cachés AUTO.

    A continuación, se muestran los valores válidos para AUTO_REFRESH_MODE:

    • ALL: se refrescan todas las cachés AUTO existentes en el esquema y, si es necesario, se crean nuevas cachés. Éste es el valor por defecto.

    • CURRENT: solo se refrescan las cachés AUTO existentes. No se agregan nuevas cachés.

    • NEW: solo se crean nuevas cachés AUTO.

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 ADMIN o tener el privilegio EXECUTE en el paquete DBMS_CACHE para ejecutar este procedimiento.

  • La configuración de nivel de usuario sustituye la configuración global.

  • MAX_CACHE_SIZE y MAX_CACHE_PERCENT no activan el almacenamiento en caché automático por sí mismos.

  • Si se definen MAX_CACHE_SIZE y MAX_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_PERCENT se define por defecto en 20.

  • Si MAX_CACHE_SIZE está definido en un valor mayor que GLOBAL_CACHE_SIZE, la base de datos genera un error.

  • La política manual siempre sustituye el comportamiento automático.