Uso de Tablas en la Nube para Almacenar Información de Registro y Diagnóstico

Puede crear tablas en la nube en las que los datos de tabla residan en el almacenamiento en la nube gestionado por Oracle y los datos de tabla no consuman almacenamiento de base de datos.

Acerca de las tablas en la nube

Puede crear tablas en la nube como alternativa complementaria a las tablas en la base de datos.

Todos los datos de la tabla en la nube se almacenan en el almacenamiento de objetos gestionado por Oracle. El almacenamiento de objetos gestionado por Oracle es un almacenamiento externo, fuera de la base de datos, que la base de datos de IA autónoma crea y gestiona.

Puede utilizar las tablas en la nube para almacenar datos de registro de aplicaciones, información de diagnóstico o para almacenar otros datos que se utilizan con poca frecuencia. En algunas aplicaciones existentes que no se ejecutan en Autonomous AI Database, puede almacenar este tipo de información en archivos de un sistema de archivos local (por ejemplo, mediante las API UTL_FILE). Tales mecanismos de registro y los archivos asociados pueden ser muy útiles cuando necesite diagnosticar y resolver errores de la aplicación. Sin embargo, el almacenamiento de información en tablas de base de datos puede utilizar grandes cantidades de almacenamiento de base de datos para datos que se utilizan con poca frecuencia. Mediante tablas en la nube, los datos persistentes se guardan en el almacenamiento de objetos gestionado por Oracle, sin consumir almacenamiento de base de datos.

Nota

El parámetro CLOUD_TABLE_COMMIT_THRESHOLD se aplica a todas las tablas en la nube y lo puede definir cualquier usuario con el privilegio ALTER SESSION. Por lo tanto, las tablas en la nube no son adecuadas para datos críticos para la seguridad en los que los cambios confirmados deben ser duraderos y deben ser visibles inmediatamente para los lectores simultáneos. Por este motivo, es posible que las tablas en la nube no sean adecuadas para casos de uso como las tablas de logs de auditoría.

Restricciones SELECT y DML para tablas en la nube

Las tablas en la nube funcionan como tablas de base de datos ordinarias con algunas restricciones. Puede utilizar sentencias SELECT y DML, de manipulación de datos, con las siguientes excepciones:

  • Las sentencias MERGE no están soportadas.
  • Las columnas LOB están limitadas a 10 MB de datos.
  • El control de simultaneidad de DML es diferente y, por lo tanto:
    • LOCK TABLE puede que no impida el DML simultáneo como lo hace para una tabla de base de datos.
    • INSERT no adquiere un bloqueo en la tabla y, por lo tanto, INSERT nunca se bloquea mediante operaciones DML simultáneas.
    • Las operaciones UPDATE y DELETE adquieren un bloqueo exclusivo en una tabla en la nube. Por lo tanto, las transacciones UPDATE o DELETE bloquean las operaciones simultáneas UPDATE o DELETE en una tabla en la nube.
  • Solo se aplican las restricciones NOT NULL.
  • DML está permitido en una base de datos de IA autónoma de lectura y escritura como lo está para cualquier otra tabla; las tablas en la nube también permiten operaciones DML en una clonación de refrescamiento.

Las tablas en la nube no soportan lo siguiente:

  • Índices
  • Columnas invisibles
  • Columnas virtuales
  • Disparadores DML
  • Más de 996 columnas
  • Columnas de tipos de datos booleanos

Operaciones de gestión del ciclo de vida y tablas en la nube

Los datos de la tabla en la nube se almacenan en el almacenamiento de objetos gestionado por Oracle. Esto significa que determinadas operaciones en la base de datos de IA autónoma manejan tablas en la nube de forma diferente a las tablas de la base de datos, de la siguiente manera:

  • Los datos de la tabla en la nube se excluyen de la copia de seguridad y la recuperación de una instancia de la base de datos de IA autónoma (no se realiza una copia de seguridad de los datos y no se pueden restaurar los datos de la tabla en la nube).

  • Los datos de tabla en la nube están protegidos mediante el almacenamiento de objetos gestionado por Oracle.

  • Las operaciones de gestión del ciclo de vida que afectan al estado de una instancia de base de datos de IA autónoma no afectan a los datos almacenados en las tablas en la nube.

La nomenclatura de tablas en la nube en Object Storage se define de forma única para cada instancia de base de datos de IA autónoma, según su OCID. Esto significa que cualquier operación que cambie o introduzca un nuevo OCID para una base de datos existente tiene un impacto en las tablas en la nube. A continuación, se ilustra el impacto de las operaciones de ciclo de vida en los datos de la tabla en la nube.

Operación de ciclo de vida Disponibilidad de datos de tabla en la nube
Clonación de la misma base de datos de región La tabla en la nube se clona sin datos de tabla en la nube
Clonación de base de datos entre regiones La tabla en la nube se clona sin datos de tabla en la nube
Misma región (local) de Autonomous Data Guard en espera Se puede acceder a los datos de tabla de nube y tabla de nube
Bases de datos en espera de Autonomous Data Guard entre regiones La tabla en la nube está disponible en la base de datos en espera, sin datos de la tabla en la nube
Misma región (local) peer de recuperación ante desastres basada en copia de seguridad Se puede acceder a los datos de tabla de nube y tabla de nube
Par de recuperación ante desastres basada en copia de seguridad entre regiones La tabla en la nube está disponible en la base de datos en espera, sin datos de tabla en la nube
Operaciones de gestión del ciclo de vida que afectan al SCN/registro de hora de una instancia de base de datos de IA autónoma, que incluyen:
  • Copia de seguridad de larga duración
  • Restauración de la base de datos (restauración a un momento)
  • Clonar desde Copia de Seguridad

La tabla de nube seguirá actualizándose y el estado antiguo de los datos de la tabla de nube no se conservará ni restaurará. Esto significa que solo están disponibles los datos actuales de la tabla en la nube.

Operaciones de gestión del ciclo de vida, que incluyen:
  • Gestionar asignación de recursos
  • Mover
  • Reducir
  • Renombrar
  • Modo: solo lectura/lectura-escritura
  • Cambiar el tipo de carga de trabajo: por ejemplo, de lakehouse a procesamiento de transacciones
No afecta a las tablas en la nube ni a los datos de las tablas en la nube

Almacenamiento en buffer con tablas en la nube

Por defecto, los cambios de DML en las tablas en la nube se exportan a Object Storage cuando se confirma DML. Sin embargo, esto puede no funcionar bien cuando los DML se estructuran como transacciones pequeñas y confirmadas con frecuencia. Para mejorar el rendimiento en este escenario, defina el parámetro CLOUD_TABLE_COMMIT_THRESHOLD para activar el almacenamiento en buffer de los cambios de DML de tabla en la nube en una sesión.

Cuando el parámetro CLOUD_TABLE_COMMIT_THRESHOLD se define en un valor distinto de cero, el sistema trata el valor como un umbral de recuento de cambios y los cambios de la tabla de nube se almacenan en buffer hasta que el número de cambios alcanza el umbral especificado. Cuando se alcanza el umbral, los cambios en el buffer se exportan a Object Storage. Los cambios en buffer también se exportan cuando la sesión termina normalmente, incluso si no se ha alcanzado CLOUD_TABLE_COMMIT_THRESHOLD. Antes de exportar los cambios en buffer, las sesiones simultáneas no ven los cambios. En raros casos que implican una caducidad inesperada del proceso, los cambios almacenados en buffer nunca se pueden exportar y los cambios no son duraderos (es decir, los cambios almacenados en buffer no se exportan al almacén de objetos).

Consulte CLOUD_TABLE_COMMIT_THRESHOLD para obtener más información.

Crear tablas en la nube

Muestra los pasos para crear una tabla en la nube en una base de datos de IA autónoma.

Para crear una tabla de nube:

  1. Ejecute el procedimiento CREATE_CLOUD_TABLE.

    Por ejemplo:

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

    Consulte CREATE_CLOUD_TABLE Procedure para obtener más información.

  2. Insertar datos en la tabla de nube.
    INSERT INTO cloud_table_test VALUES (1, 'xyz');

    Puede utilizar el parámetro de inicialización CLOUD_TABLE_COMMIT_THRESHOLD para activar el almacenamiento en buffer de las tablas en la nube. Consulte CLOUD_TABLE_COMMIT_THRESHOLD para obtener más información.

  3. Seleccione datos de una tabla en la nube.
    SELECT * FROM cloud_table_test;
    I          STR1
    ---------- --------------------------------
    1          xyz                            

Utilice DROP TABLE cuando desee borrar una tabla en la nube.

Por ejemplo:

DROP TABLE CLOUD_TABLE_TEST;

Las tablas en la nube no soportan la papelera de reciclaje.

Consulte Notas de la tabla en la nube para obtener más información.

Notas de tabla de nube

Proporciona notas para el uso de tablas en la nube.

A continuación se muestran las notas para utilizar tablas en la nube:

  • Puede otorgar privilegios SELECT, INSERT y UPDATE para una tabla en la nube. No se pueden otorgar otros privilegios a una tabla en la nube.

    Consulte Configuración de Privilegios y Autorización de Roles para obtener más información.

  • Las restricciones de la tabla en la nube están limitadas a las restricciones en modo RELY DISABLE NOVALIDATE, lo que significa que la restricción no se aplica. La única excepción a esto es para restricciones NOT NULL.

    Las tablas en la nube soportan todos los modos de restricción NOT NULL, incluido el modo por defecto (ENABLE VALIDATE). Se soportan las restricciones PRIMARY KEY, UNIQUE, FOREIGN KEY y NOT NULL; no se soportan las restricciones CHECK.

    Puede declarar restricciones en línea como parte de COLUMN_LIST.

    Por ejemplo:

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

    Consulte Notas de la tabla en la nube para obtener más información sobre las limitaciones de la tabla en la nube.

  • El paquete DBMS_CLOUD es un paquete de derechos del invocador. El procedimiento DBMS_CLOUD.CREATE_CLOUD_TABLE solo permite crear una tabla en el esquema del invocador.

    Consulte Invoker's Rights and Definer's Rights Clause para obtener más información.

  • El parámetro column_list en una llamada al procedimiento DBMS_CLOUD.CREATE_CLOUD_TABLE puede incluir la cláusula DEFAULT, que funciona como la cláusula DEFAULT en CREATE TABLE. Consulte CREATE TABLE para obtener más información.

    Por ejemplo:

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

    A continuación, puede insertar valores por defecto. Por ejemplo:

    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
  • Puede utilizar el parámetro de inicialización CLOUD_TABLE_COMMIT_THRESHOLD para activar el almacenamiento en buffer de las tablas en la nube. Consulte CLOUD_TABLE_COMMIT_THRESHOLD para obtener más información.