Package DBMS_CACHE

Le package DBMS_CACHE facilite la mise en cache automatique des caches de table externes dans une instance de base de données Autonomous AI.

Récapitulatif des sous-programmes DBMS_CACHE

Ce tableau récapitule les sous-programmes inclus dans le package DBMS_CACHE.

Sous-programme Description

Procédure CLEAR

Efface tous les caches de table externe pour un utilisateur spécifié.

Procédure GET_GLOBAL_PROPERTY

Extrait les propriétés de mise en cache des tables externes.

Procédure GET_USER_PROPERTY

Extrait les propriétés de mise en cache de table externe pour un utilisateur spécifié.

Procédure REFRESH

Actualise tous les caches de table externe pour un utilisateur donné.

Procédure SET_GLOBAL_PROPERTY

Spécifie la préférence de mise en cache de table externe pour tous les utilisateurs de base de données.

Procédure SET_USER_PROPERTY

Spécifie la préférence de mise en cache de table externe pour un utilisateur spécifié.

Procédure CLEAR

Utilisez la procédure DBMS_CACHE.CLEAR pour supprimer tous les caches de table externe d'un utilisateur donné.

La procédure DBMS_CACHE.CLEAR supprime tous les caches de table externe et libère l'espace de stockage, comme la commande DROP fonctionne sur une table de base de données.

Syntaxe

DBMS_CACHE.CLEAR (
    owner    IN   VARCHAR2
);

Paramètres

Paramètre Description

owner

Indique le nom du schéma.

Exemple

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

Remarque sur l'utilisation

  • Vous devez être connecté en tant qu'utilisateur ADMIN ou disposer du privilège EXECUTE sur le package DBMS_CACHE pour vider un cache.

Procédure GET_GLOBAL_PROPERTY

La procédure DBMS_CACHE.GET_GLOBAL_PROPERTY extrait les préférences de mise en cache de table externe pour tous les utilisateurs de la base de données. Cette procédure est surchargée.

Syntaxe

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

Paramètres

Paramètre Description

property_name

Indique le nom de propriété.

Les valeurs valides pour property_name sont les suivantes :
  • MAX_CACHE_PERCENT

  • MAX_CACHE_SIZE

  • MAX_REFRESH_WINDOW

  • AUTO_REFRESH_MODE

property_value_num

Extrait une valeur NUMBER pour le nom de propriété spécifié.

property_value_str

Extrait une valeur STRING pour le nom de propriété spécifié.

Exemple

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

Remarque sur l'utilisation

  • Vous devez être connecté en tant qu'utilisateur ADMIN ou disposer du privilège EXECUTE sur le package DBMS_CACHE pour exécuter cette procédure.

Procédure SET_GLOBAL_PROPERTY

Utilisez la procédure DBMS_CACHE.SET_GLOBAL_PROPERTY pour définir les propriétés de mise en cache AUTO pour tous les utilisateurs de base de données, y compris ceux qui activent la mise en cache automatique pour la base de données. Cette procédure est surchargée.

Par défaut, la mise en cache automatique des tables externes est désactivée. Pour l'activer, définissez la taille du cache sur une valeur différente de zéro à l'aide de la propriété MAX_CACHE_SIZE ou MAX_CACHE_SIZE de la procédure DBMS_CACHE.SET_GLOBAL_PROPERTY. Cela permet une mise en cache automatique globale pour la base de données.

Syntaxe


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

Paramètres

Paramètre Description

property_name

Indique le nom de propriété.

Les valeurs valides pour property_name sont les suivantes :
  • MAX_CACHE_PERCENT : la propriété MAX_CACHE_PERCENT indique le pourcentage maximal de quota de stockage affecté à un utilisateur qui peut être utilisé pour les caches de table externe.

  • MAX_CACHE_SIZE : la propriété MAX_CACHE_SIZE indique la quantité maximale de stockage, en octets, qu'un utilisateur peut utiliser pour les caches de table externes.

  • MAX_REFRESH_WINDOW : la propriété MAX_REFRESH_WINDOW dans indique la fenêtre de temps maximale, en secondes, autorisée pour l'actualisation des caches de table externe.

  • AUTO_REFRESH_MODE : indique la portée à laquelle l'actualisation est effectuée pour les caches AUTO.

    Les valeurs valides pour AUTO_REFRESH_MODE sont les suivantes :
    • ALL : tous les caches AUTO existants dans la base de données sont actualisés et, si nécessaire, de nouveaux caches sont créés. Il s'agit de la valeur par défaut.

    • CURRENT : seuls les caches existants sont actualisés, aucun nouveau cache n'est ajouté.

    • NEW : seuls les nouveaux caches sont créés.

property_value_num

Fournit une valeur NUMBER pour le nom de propriété spécifié.

property_value_str

Fournit une valeur STRING pour le nom de propriété spécifié.

Exemples

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

Notes d'utilisation

  • Vous devez être connecté en tant qu'utilisateur ADMIN ou disposer du privilège EXECUTE sur le package DBMS_CACHE pour exécuter cette procédure.

  • La propriété MAX_REFRESH_WINDOW indique, en seconde, la durée maximale autorisée pour l'actualisation des caches de table externe. Si l'actualisation dépasse la limite spécifiée, l'actualisation du cache se ferme normalement et tous les caches admissibles restants sont mis en file d'attente pour le cycle d'actualisation suivant.

  • Lorsque vous actualisez les caches à l'aide de la procédure DBMS_CACHE.REFRESH, le paramètre de procédure est prioritaire sur la propriété AUTO_REFRESH_MODE.

    Pour plus d'informations, reportez-vous à Procédure REFRESH.

Procédure REFRESH

Utilisez la procédure DBMS_CACHE.REFRESH pour actualiser tous les caches de table externe AUTO pour un utilisateur donné.

Syntaxe

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

Paramètres

Paramètre Description

owner

Indique le nom du schéma.

refresh_type

Indique l'option d'actualisation.

Les valeurs refresh_type valides sont les suivantes :
  • ALL : tous les caches AUTO existants pour le schéma indiqué sont actualisés et, si nécessaire, de nouveaux caches sont créés pour l'utilisateur indiqué. Il s'agit de la valeur par défaut.

  • CURRENT : seuls les caches existants sont actualisés, aucun nouveau cache n'est ajouté pour l'utilisateur indiqué.

  • NEW : seuls les nouveaux caches sont créés pour l'utilisateur indiqué.

Ce paramètre est facultatif et est défini par défaut sur ALL.

Exemple

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

Notes d'utilisation

  • Vous devez être connecté en tant qu'utilisateur ADMIN ou disposer du privilège EXECUTE sur le package DBMS_CACHE pour exécuter cette procédure.

  • Si vous n'indiquez pas de valeur pour le paramètre refresh_type, Oracle effectue une actualisation en fonction de la valeur auto_refresh_mode. La valeur par défaut pour auto_refresh_mode est ALL.

  • Lorsque la propriété MAX_REFRESH_WINDOW est définie, Oracle tente d'effectuer une actualisation dans la fenêtre indiquée. Si l'actualisation dépasse la limite spécifiée, l'actualisation du cache se ferme normalement et tous les caches admissibles restants sont mis en file d'attente pour le cycle d'actualisation suivant.

  • Tous les caches AUTO de la base de données sont gérés à l'aide d'un algorithme d'expulsion similaire à LRU (Least Recent Used). Lorsque l'espace est insuffisant, les caches auxquels vous avez accédé le plus récemment sont automatiquement supprimés au cours du processus d'actualisation pour libérer l'espace de stockage.

Procédure GET_USER_PROPERTY

Utilisez la procédure DBMS_CACHE.GET_USER_PROPERTY pour extraire les propriétés de mise en cache automatique d'un utilisateur.

Syntaxe

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

Paramètres

Paramètre Description

property_name

Indique le nom de propriété.

Les valeurs valides pour property_name sont les suivantes :
  • MAX_CACHE_PERCENT

  • MAX_CACHE_SIZE

  • AUTO_REFRESH_MODE

owner

Indique le nom du schéma. Ce paramètre est facultatif et correspond par défaut au schéma en cours.

property_value_str

Extrait une valeur STRING pour le nom de propriété spécifié.

property_value_num

Extrait une valeur NUMBER pour le nom de propriété spécifié.

Exemple

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

Remarque sur l'utilisation

  • Vous devez être connecté en tant qu'utilisateur ADMIN ou disposer du privilège EXECUTE sur le package DBMS_CACHE pour exécuter cette procédure.

Procédure SET_USER_PROPERTY

Utilisez la procédure DBMS_CACHE.SET_USER_PROPERTY pour définir les propriétés de mise en cache AUTO pour un schéma spécifié, y compris celles qui activent la mise en cache automatique pour le schéma. Cette procédure est surchargée.

Syntaxe

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

Paramètres

Paramètre Description

property_name

Indique le nom de propriété.

Les valeurs valides pour property_name sont les suivantes :
  • MAX_CACHE_PERCENT

  • MAX_CACHE_SIZE

  • AUTO_REFRESH_MODE : indique la portée à laquelle l'actualisation est effectuée pour les caches AUTO.

    Les valeurs valides pour AUTO_REFRESH_MODE sont les suivantes :
    • ALL : tous les caches AUTO existants dans le schéma sont actualisés et, si nécessaire, de nouveaux caches sont créés pour l'utilisateur indiqué. Il s'agit de la valeur par défaut.

    • CURRENT : seuls les caches existants sont actualisés, aucun nouveau cache n'est ajouté pour l'utilisateur indiqué.

    • NEW : seuls les nouveaux caches sont créés pour l'utilisateur indiqué.

property_value_num

Fournit une valeur NUMBER pour le nom de propriété spécifié.

property_value_str

Fournit une valeur STRING pour le nom de propriété spécifié.

owner

Indique le nom du schéma. Ce paramètre est facultatif et correspond par défaut au schéma en cours.

Exemple

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

Remarque sur l'utilisation

  • Vous devez être connecté en tant qu'utilisateur ADMIN ou disposer du privilège EXECUTE sur le package DBMS_CACHE pour exécuter cette procédure.