Utiliser des tables cloud pour stocker les informations de journalisation et de diagnostic

Vous pouvez créer des tables cloud dans lesquelles les données de table résident sur le stockage cloud géré par Oracle et dans lesquelles les données de table ne consomment pas de stockage de base de données.

A propos des tables cloud

Vous pouvez créer des tables cloud en tant qu'alternative complémentaire aux tables dans la base de données. Toutes les données de table cloud sont stockées dans le stockage d'objet géré par Oracle. Le stockage d'objets géré par Oracle est un stockage externe, en dehors de la base de données, créé et géré par Autonomous Database.

Vous pouvez utiliser les tables cloud pour stocker des données de journalisation d'application peu utilisées, des informations de diagnostic ou d'autres données. Dans certaines applications existantes qui ne sont pas exécutées sur Autonomous Database, vous pouvez stocker ce type d'informations dans des fichiers sur un système de fichiers local (par exemple, à l'aide des API UTL_FILE). Ces mécanismes de journalisation et les fichiers associés peuvent être très utiles lorsque vous avez besoin de diagnostiquer et de résoudre des erreurs d'application. Toutefois, le stockage des informations dans les tables de base de données peut utiliser de grandes quantités de stockage de base de données pour les données rarement utilisées. A l'aide de tables cloud, les données persistantes sont enregistrées dans Object Storage géré par Oracle sans utiliser de stockage de base de données.

Restrictions SELECT et DML pour les tables cloud

Les tables cloud fonctionnent comme les tables de base de données ordinaires avec certaines restrictions. Vous pouvez utiliser des instructions SELECT et DML, des instructions de manipulation de données, avec les exceptions suivantes :

  • Les instructions MERGE ne sont pas prises en charge.
  • Les colonnes LOB sont limitées à 10 Mo de données.
  • Le contrôle de simultanéité d'accès LMD est différent et, par conséquent :
    • LOCK TABLE ne peut pas empêcher les opérations LMD simultanées, comme pour une table de base de données.
    • INSERT n'acquiert pas de verrou sur la table. Par conséquent, INSERT n'est jamais bloqué par des opérations LMD simultanées.
    • Les opérations UPDATE et DELETE acquièrent toutes deux un verrou exclusif sur une table cloud. Par conséquent, les transactions UPDATE ou DELETE bloquent les opérations UPDATE ou DELETE simultanées sur une table cloud.
  • Seules les contraintes NOT NULL sont appliquées.
  • Le langage DML est autorisé dans une instance Autonomous Database en lecture-écriture comme pour toute autre table. Les tables cloud autorisent également les opérations DML dans un clone actualisable.

Les tables cloud ne prennent pas en charge les éléments suivants :

  • Indexes
  • Colonne invisible
  • Colonnes virtuelles
  • Déclencheurs LMD
  • Plus de 996 colonnes
  • Colonnes de type de données boolean

Opérations de gestion du cycle de vie et tables cloud

Les données de table cloud sont stockées dans le stockage d'objet géré par Oracle. Cela signifie que certaines opérations sur Autonomous Database traitent les tables cloud différemment des tables dans la base de données, comme suit :

  • Les données de table cloud sont exclues de la sauvegarde et de la récupération d'une instance Autonomous Database (les données ne sont pas sauvegardées et vous ne pouvez pas restaurer les données de table cloud).

  • Les données de table cloud sont protégées via Object Storage géré par Oracle.

  • Les opérations de gestion du cycle de vie qui ont une incidence sur l'état d'une instance Autonomous Database n'ont aucune incidence sur les données stockées dans les tables cloud.

La dénomination des tables cloud dans Object Storage est définie de manière unique pour chaque instance Autonomous Database, en fonction de son OCID. Cela signifie que toute opération qui modifie ou introduit un nouvel OCID pour une base de données existante a un impact sur les tables cloud. L'exemple suivant illustre l'impact des opérations de cycle de vie sur les données de table cloud.

Opération de cycle de vie Disponibilité des données de table cloud
Clone de base de données de même région La table cloud est clonée sans données de table cloud
Clone de base de données inter-région La table cloud est clonée sans données de table cloud
Même région (locale) de secours Autonomous Data Guard Les données de table cloud et de table cloud sont accessibles
Base de données de secours Autonomous Data Guard dans plusieurs régions La table cloud est disponible sur la base de données de secours, sans les données de table cloud
Même homologue de récupération après sinistre basé sur une sauvegarde (local) de région Les données de table cloud et de table cloud sont accessibles
Homologue de récupération après sinistre basé sur la sauvegarde inter-régions La table cloud est disponible sur la base de données de secours, sans données de table cloud
Opérations de gestion du cycle de vie ayant un impact sur le numéro SCN/l'horodatage d'une instance Autonomous Database, notamment :
  • Sauvegarde à long terme
  • Restaurer la base de données (restauration à un point dans le temps)
  • Copier à partir d'une sauvegarde

La table cloud continuera à être mise à jour et l'ancien état des données de table cloud n'est pas conservé ou restauré. Cela signifie que seules les données actuelles de la table cloud sont disponibles.

Opérations de gestion du cycle de vie, notamment :
  • Gérer l'allocation de ressources
  • Déplacer
  • Réduire
  • Changement de nom
  • Mode : Lecture seule/lecture-écriture
  • Modifier le type de charge globale : par exemple, du data warehouse au traitement des transactions
Aucun impact sur les tables cloud ou sur les données de table cloud

Créer des tables cloud

Présente les étapes de création d'une table cloud sur Autonomous Database.

Pour créer une table cloud, procédez comme suit :

  1. Exécutez la procédure CREATE_CLOUD_TABLE.

    Exemple :

    BEGIN
      DBMS_CLOUD.CREATE_CLOUD_TABLE(
       table_name  => 'CLOUD_TABLE_TEST',
       column_list => 'I INTEGER, STR1 VARCHAR2(32)' );
    END;
    /

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

  2. Insérez des données dans le tableau Cloud.
    INSERT INTO cloud_table_test VALUES (1, 'xyz');
  3. Sélectionnez des données dans une table cloud.
    SELECT * FROM cloud_table_test;
    I          STR1
    ---------- --------------------------------
    1          xyz                            

Utilisez DROP TABLE pour supprimer une table cloud.

Exemple :

DROP TABLE CLOUD_TABLE_TEST;

Les tables cloud ne prennent pas en charge la corbeille.

Pour plus d'informations, reportez-vous aux notes sur le tableau cloud.

Remarques sur la table Cloud

Fournit des remarques sur les tables cloud :

  • Vous pouvez accorder des privilèges SELECT, INSERT et UPDATE pour une table cloud. Aucun autre privilège ne peut être accordé à une table cloud.

    Pour plus d'informations, reportez-vous à Configuration de l'autorisation des privilèges et des rôles.

  • Les contraintes de table cloud sont limitées aux contraintes en mode RELY DISABLE NOVALIDATE, ce qui signifie que la contrainte n'est pas appliquée. La seule exception à cette règle concerne les contraintes NOT NULL.

    Les tables cloud prennent en charge tous les modes de contrainte NOT NULL, y compris le mode par défaut (ENABLE VALIDATE). Les contraintes PRIMARY KEY, UNIQUE, FOREIGN KEY et NOT NULL sont prises en charge ; les contraintes CHECK ne le sont pas.

    Vous pouvez déclarer des contraintes en ligne dans le cadre de COLUMN_LIST.

    Exemple :

    BEGIN
      DBMS_CLOUD.CREATE_CLOUD_TABLE(
            table_name  => 'CLOUD_TAB_WITH_CONSTRAINTS',
            column_list => 'PK INTEGER,
                DATE_ID INT REFERENCES DATE_DIM(DATE_ID) RELY DISABLE NOVALIDATE,
                VAL NUMBER NOT NULL,
                CONSTRAINT CLOUD_TAB_PK PRIMARY KEY(PK) RELY DISABLE NOVALIDATE');
    END;
    /

    Reportez-vous aux notes de table cloud pour plus d'informations sur les limitations de table cloud.

  • Le package DBMS_CLOUD est un package de droits de l'appelant. La procédure DBMS_CLOUD.CREATE_CLOUD_TABLE vous permet uniquement de créer une table dans le schéma de l'appelant.

    Pour plus d'informations, reportez-vous à Clause Invoker's Rights and Definer's Rights.

  • Le paramètre column_list dans un appel de procédure DBMS_CLOUD.CREATE_CLOUD_TABLE peut inclure la clause DEFAULT, qui fonctionne comme la clause DEFAULT dans CREATE TABLE. Pour plus d'informations, reportez-vous à CREATE TABLE.

    Exemple :

    BEGIN
      DBMS_CLOUD.CREATE_CLOUD_TABLE(
       table_name  => 'CLOUD_TABLE_TEST_DEFAULT',
       column_list => 'I INTEGER, STR2 VARCHAR2(32) DEFAULT ''ABC''');
    END;
    /

    Vous pouvez ensuite insérer des valeurs par défaut. Exemple :

    INSERT INTO cloud_table_test_default (i) VALUES (1); 
    1 row created. 
    INSERT INTO cloud_table_test_default VALUES (2, default);
    1 row created.
    INSERT INTO cloud_table_test_default VALUES (3, null);
    1 row created.
    INSERT INTO cloud_table_test_default VALUES (4, 'xyz');
    1 row created.
    COMMIT;
    Commit complete.
    SELECT * FROM cloud_table_test_default ORDER BY i;
    
    I STR2 
    - ---- 
    1 ABC  
    2 ABC  
    3 null 
    4 xyz