Pacchetto DBMS_CACHE

Il package DBMS_CACHE facilita l'inserimento automatico nella cache delle tabelle esterne in un'istanza di Autonomous AI Database.

Riepilogo dei sottoprogrammi DBMS_CACHE

La tabella riportata di seguito riassume i sottoprogrammi inclusi nel pacchetto DBMS_CACHE.

Sottoprogramma Descrizione

Procedura CLEAR

Cancella tutte le cache delle tabelle esterne per un utente specificato.

Procedura GET_GLOBAL_PROPERTY

Recupera le proprietà di inserimento nella cache della tabella esterna.

Procedura GET_USER_PROPERTY

Recupera le proprietà di inserimento nella cache della tabella esterna per un utente specificato.

Procedura REFRESH

Aggiorna tutte le cache delle tabelle esterne per un utente specificato.

Procedura SET_GLOBAL_PROPERTY

Specifica la preferenza di inserimento nella cache della tabella esterna per tutti gli utenti del database.

Procedura SET_USER_PROPERTY

Specifica la preferenza di inserimento nella cache della tabella esterna per un utente specificato.

Procedura CLEAR

Utilizzare la procedura DBMS_CACHE.CLEAR per eliminare tutte le cache delle tabelle esterne per un utente specificato.

La procedura DBMS_CACHE.CLEAR elimina tutte le cache delle tabelle esterne e rilascia lo spazio di memorizzazione, in modo simile al funzionamento del comando DROP in una tabella di database.

Sintassi

DBMS_CACHE.CLEAR (
    owner    IN   VARCHAR2
);

Parametri

Parametro Descrizione

owner

Specifica il nome dello schema.

Esempio

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

Nota per l'uso

  • Per cancellare una cache, è necessario aver eseguito il login come utente ADMIN o disporre del privilegio EXECUTE nel pacchetto DBMS_CACHE.

Procedura GET_GLOBAL_PROPERTY

La procedura DBMS_CACHE.GET_GLOBAL_PROPERTY recupera le preferenze di inserimento nella cache delle tabelle esterne per tutti gli utenti del database. Questa procedura è sovraccaricata.

Sintassi

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);

Parametri

Parametro Descrizione

property_name

Specifica il nome della proprietà.

I valori validi per property_name sono riportati di seguito.
  • MAX_CACHE_PERCENT

  • MAX_CACHE_SIZE

  • MAX_REFRESH_WINDOW

  • AUTO_REFRESH_MODE

property_value_num

Recupera un valore NUMBER per il nome proprietà specificato.

property_value_str

Recupera un valore STRING per il nome proprietà specificato.

Esempio

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;
/

Nota per l'uso

  • Per eseguire questa procedura, è necessario aver eseguito il login come utente ADMIN o disporre del privilegio EXECUTE sul pacchetto DBMS_CACHE.

Procedura SET_GLOBAL_PROPERTY

Utilizzare la procedura DBMS_CACHE.SET_GLOBAL_PROPERTY per impostare le proprietà di inserimento nella cache AUTO per tutti gli utenti del database, inclusi quelli che abilitano l'inserimento automatico nella cache per il database. Questa procedura è sovraccaricata.

Per impostazione predefinita, l'inserimento automatico nella cache delle tabelle esterne è disabilitato. Per abilitarla, impostare la dimensione della cache su un valore diverso da zero utilizzando la proprietà MAX_CACHE_SIZE o MAX_CACHE_SIZE della procedura DBMS_CACHE.SET_GLOBAL_PROPERTY. Ciò consente l'inserimento automatico nella cache a livello globale per il database.

Sintassi


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);

Parametri

Parametro Descrizione

property_name

Specifica il nome della proprietà.

I valori validi per property_name sono riportati di seguito.
  • MAX_CACHE_PERCENT: la proprietà MAX_CACHE_PERCENT specifica la percentuale massima della quota di memorizzazione assegnata di un utente che può essere utilizzata per le cache di tabelle esterne.

  • MAX_CACHE_SIZE: la proprietà MAX_CACHE_SIZE specifica la quantità massima di storage, espressa in byte, che un utente può utilizzare per le cache delle tabelle esterne.

  • MAX_REFRESH_WINDOW: la proprietà MAX_REFRESH_WINDOW specifica la finestra temporale massima, in secondi, consentita per l'aggiornamento delle cache delle tabelle esterne.

  • AUTO_REFRESH_MODE: specifica l'ambito in cui viene eseguito l'aggiornamento per le cache AUTO.

    I valori validi per AUTO_REFRESH_MODE sono riportati di seguito.
    • ALL: tutte le cache AUTO esistenti nel database vengono aggiornate e, se necessario, vengono create nuove cache. Si tratta del valore predefinito.

    • CURRENT: vengono aggiornate solo le cache esistenti, non vengono aggiunte nuove cache.

    • NEW: vengono create solo nuove cache.

property_value_num

Fornisce un valore NUMBER per il nome proprietà specificato.

property_value_str

Fornisce un valore STRING per il nome proprietà specificato.

Esempi

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;                                                                 
/

Note sull'uso

  • Per eseguire questa procedura, è necessario aver eseguito il login come utente ADMIN o disporre del privilegio EXECUTE sul pacchetto DBMS_CACHE.

  • La proprietà MAX_REFRESH_WINDOW specifica, in secondo luogo, il tempo massimo consentito per l'aggiornamento delle cache delle tabelle esterne. Se l'aggiornamento supera il limite specificato, l'aggiornamento della cache termina normalmente e le eventuali cache idonee rimanenti vengono inserite nella coda per il ciclo di aggiornamento successivo.

  • Quando si aggiornano le cache utilizzando la procedura DBMS_CACHE.REFRESH, il parametro della procedura ha la precedenza sulla proprietà AUTO_REFRESH_MODE.

    Per ulteriori informazioni, vedere Procedura REFRESH.

Procedura REFRESH

Utilizzare la procedura DBMS_CACHE.REFRESH per aggiornare tutte le cache delle tabelle esterne AUTO per un utente specificato.

Sintassi

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

Parametri

Parametro Descrizione

owner

Specifica il nome dello schema.

refresh_type

Specifica l'opzione di aggiornamento.

Di seguito sono riportati i valori refresh_type validi.
  • ALL: tutte le cache AUTO esistenti per lo schema specificato vengono aggiornate e, se necessario, vengono create nuove cache per l'utente specificato. Si tratta del valore predefinito.

  • CURRENT: vengono aggiornate solo le cache esistenti, non vengono aggiunte nuove cache per l'utente specificato.

  • NEW: vengono create solo nuove cache per l'utente specificato.

Questo parametro è facoltativo e il valore predefinito è ALL.

Esempio

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

Note sull'uso

  • Per eseguire questa procedura, è necessario aver eseguito il login come utente ADMIN o disporre del privilegio EXECUTE sul pacchetto DBMS_CACHE.

  • Se non si specifica un valore per il parametro refresh_type, Oracle esegue l'aggiornamento in base al valore auto_refresh_mode. Il valore predefinito per auto_refresh_mode è ALL.

  • Quando la proprietà MAX_REFRESH_WINDOW è impostata, Oracle tenta di eseguire l'aggiornamento nella finestra specificata. Se l'aggiornamento supera il limite specificato, l'aggiornamento della cache termina normalmente e le eventuali cache idonee rimanenti vengono inserite nella coda per il ciclo di aggiornamento successivo.

  • Tutte le cache AUTO nel database vengono gestite utilizzando un algoritmo di rimozione simile a quello utilizzato meno di recente (LRU). In condizioni di pressione dello spazio, le cache a cui si è avuto accesso meno di recente vengono automaticamente eliminate durante il processo di aggiornamento per rilasciare lo spazio di storage.

Procedura GET_USER_PROPERTY

Utilizzare la procedura DBMS_CACHE.GET_USER_PROPERTY per recuperare le proprietà di inserimento automatico nella cache per un utente.

Sintassi

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);

Parametri

Parametro Descrizione

property_name

Specifica il nome della proprietà.

I valori validi per property_name sono riportati di seguito.
  • MAX_CACHE_PERCENT

  • MAX_CACHE_SIZE

  • AUTO_REFRESH_MODE

owner

Specifica il nome dello schema. Questo parametro è facoltativo e utilizza per impostazione predefinita lo schema corrente.

property_value_str

Recupera un valore STRING per il nome proprietà specificato.

property_value_num

Recupera un valore NUMBER per il nome proprietà specificato.

Esempio

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;
/

Nota per l'uso

  • Per eseguire questa procedura, è necessario aver eseguito il login come utente ADMIN o disporre del privilegio EXECUTE sul pacchetto DBMS_CACHE.

Procedura SET_USER_PROPERTY

Utilizzare la procedura DBMS_CACHE.SET_USER_PROPERTY per impostare le proprietà di inserimento nella cache AUTO per uno schema specificato, incluse quelle che abilitano l'inserimento nella cache automatico per lo schema. Questa procedura è sovraccaricata.

Sintassi

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
);

Parametri

Parametro Descrizione

property_name

Specifica il nome della proprietà.

I valori validi per property_name sono riportati di seguito.
  • MAX_CACHE_PERCENT

  • MAX_CACHE_SIZE

  • AUTO_REFRESH_MODE: specifica l'ambito in cui viene eseguito l'aggiornamento per le cache AUTO.

    I valori validi per AUTO_REFRESH_MODE sono riportati di seguito.
    • ALL: tutte le cache AUTO esistenti nello schema vengono aggiornate e, se necessario, vengono create nuove cache per l'utente specificato. Si tratta del valore predefinito.

    • CURRENT: vengono aggiornate solo le cache esistenti, non vengono aggiunte nuove cache per l'utente specificato.

    • NEW: vengono create solo nuove cache per l'utente specificato.

property_value_num

Fornisce un valore NUMBER per il nome proprietà specificato.

property_value_str

Fornisce un valore STRING per il nome proprietà specificato.

owner

Specifica il nome dello schema. Questo parametro è facoltativo e utilizza per impostazione predefinita lo schema corrente.

Esempio

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

Nota per l'uso

  • Per eseguire questa procedura, è necessario aver eseguito il login come utente ADMIN o disporre del privilegio EXECUTE sul pacchetto DBMS_CACHE.