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

Vous pouvez créer des tables cloud où les données de table résident sur le stockage cloud géré par Oracle et où les données de table n'utilisent pas le 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 Object Storage géré par Oracle. Le stockage d'objets géré par Oracle est un stockage externe, en dehors de la base de données, qu'Autonomous Database crée et gère.

Vous pouvez utiliser des tables cloud pour stocker des données de journalisation d'application rarement utilisées, des informations de diagnostic ou pour stocker 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, en utilisant des API UTL_FILE). Ces mécanismes de journalisation et les fichiers associés peuvent être très utiles lorsque vous devez diagnostiquer et résoudre les 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 des tables cloud, les données persistantes sont enregistrées dans Object Storage géré par Oracle, sans consommer 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é DML est différent, et donc :
    • LOCK TABLE n'empêche pas les opérations LMD simultanées, comme c'est le cas 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 LMD dans un clone actualisable.

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

  • Index
  • colonnes invisibles
  • Colonnes virtuelles
  • Déclencheurs LMD
  • plus de 996 colonnes ;
  • Colonnes de type de données booléennes

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

Les données de table cloud sont stockées dans Object Storage 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 Cloud Table.

Opération de cycle de vie Disponibilité des données de table cloud
Clone de base de données de même région Table cloud clonée sans données de table cloud
Clone de base de données inter-région Table cloud 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 inter-région Cloud Table est disponible sur la base de données de secours, sans les données Cloud Table
Même région (locale) homologue de récupération après sinistre basé sur la sauvegarde Les données de table cloud et de table cloud sont accessibles
Pair de récupération après sinistre basé sur la sauvegarde inter-région Cloud Table est disponible sur la base de données de secours, sans données Cloud Table
Opérations de gestion du cycle de vie ayant une incidence sur le numéro SCN/l'horodatage d'une instance Autonomous Database, notamment :
  • Sauvegarde de longue durée
  • Restauration de la base de données (restauration à un moment dans le temps)
  • Clonage à partir d'une sauvegarde

La table cloud continuera d'être mise à jour et l'ancien état des données de la 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
  • Renommer
  • Mode : lecture seule/lecture-écriture
  • Modifier le type de charge globale : par exemple, entre Data Warehouse et Transaction Processing
Aucun impact sur les tables cloud ou sur les données des tables 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 :

  1. Exécutez la procédure CREATE_CLOUD_TABLE.

    Par 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 à Procédure CREATE_CLOUD_TABLE.

  2. Insérez des données dans la table 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.

Par exemple :

DROP TABLE CLOUD_TABLE_TEST;

Les tables cloud ne prennent pas en charge la corbeille.

Pour plus d'informations, reportez-vous à Notes sur les tables cloud.

Notes de 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 de privilège et de rôle.

  • 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.

    Par 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 à Notes sur la table cloud pour connaître les limites supplémentaires de la 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 Droits de l'appelant et Droits du créateur.

  • 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.

    Par 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. Par 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