Configurar una base de datos Oracle conectable para CDC

Datastream admite la arquitectura multiinquilino de Oracle, en la que una sola base de datos de contenedor (CDB) contiene una o varias bases de datos conectables (PDBs). Cada base de datos conectable es una base de datos independiente con un ID y un nombre únicos, y se puede gestionar de forma independiente.

En esta página se describe cómo configurar la captura de datos de cambios (CDC) para transmitir datos de una base de datos de Oracle conectable a un destino admitido, como BigQuery o Cloud Storage.

Puedes configurar tu base de datos Oracle conectable para usarla con los siguientes métodos de CDC:

Para obtener más información sobre el lector de registros binarios y la API LogMiner, consulta el artículo Trabajar con archivos de registro de versiones de base de datos de Oracle.

Para obtener instrucciones detalladas sobre cómo configurar la base de datos de Oracle de origen para cada uno de estos métodos, consulta las secciones siguientes.

Configurar una base de datos de Oracle conectable para el lector de registros binarios

Para configurar tu base de datos de Oracle conectable para usarla con el método de CDC del lector de registros binarios, sigue estos pasos:

  1. Selecciona uno de los siguientes métodos para acceder a tus archivos de registro:

    • Gestión automática del almacenamiento (ASM): si seleccionas esta opción, debes crear una conexión ASM específica y proporcionar sus detalles al crear tu perfil de conexión.
    • Directorios de bases de datos: si selecciona esta opción, debe crear objetos de directorio de bases de datos que apunten a los archivos de registro de rehacer y a los archivos de registro archivados, y conceder acceso READ a los directorios a su usuario de base de datos:
    CREATE DIRECTORY DIRECTORY_NAME_1 as 'ONLINE_REDO_LOGS_PATH';
    CREATE DIRECTORY DIRECTORY_NAME_2 as 'ARCHIVED_REDO_LOGS_PATH';
    GRANT READ ON DIRECTORY DIRECTORY_NAME_1 to USER_NAME;
    GRANT READ ON DIRECTORY DIRECTORY_NAME_2 to USER_NAME;

    Haz los cambios siguientes:

    • DIRECTORY_NAME_1: nombre del directorio de los archivos de rehacer online.
    • DIRECTORY_NAME_2: el nombre del directorio de los archivos de registro de rehacer archivados.
    • ONLINE_REDO_LOGS_PATH: ruta al directorio en el que se van a almacenar los archivos de rehacer online.
    • ARCHIVED_REDO_LOGS_PATH: ruta al directorio en el que se almacenarán los archivos de registro archivados.
    • USER_NAME: el nombre del usuario de la base de datos al que quieres conceder acceso READ.

    Si seleccionas el método de lectura de registros binarios y usas directorios de bases de datos, debes proporcionar los nombres de los directorios de registros de rehacer y de registros archivados al crear tu flujo.

  2. Comprueba que tu base de datos se está ejecutando en el modo ARCHIVELOG.

    Para ello, inicia sesión en tu base de datos Oracle y ejecuta el siguiente comando en el mensaje de SQL:

    SELECT LOG_MODE FROM V$DATABASE;
    
    1. Si el resultado es ARCHIVELOG, ve al siguiente paso.
    2. Si el resultado es NOARCHIVELOG, tendrás que habilitar el modo ARCHIVELOG en tu base de datos.
    3. Ejecuta los siguientes comandos cuando hayas iniciado sesión como SYSDBA:

      SHUTDOWN IMMEDIATE;
      STARTUP MOUNT;
      ALTER DATABASE ARCHIVELOG;
      ALTER DATABASE OPEN;
    4. Los archivos de registro archivados consumen espacio en disco, por lo que le recomendamos que configure el parámetro DB_RECOVERY_FILE_DEST_SIZE de su base de datos. Use este parámetro para especificar (en bytes) el límite estricto del espacio total que usarán los archivos de recuperación de la base de datos de destino. Al definir este parámetro, puede gestionar el equilibrio entre proteger la base de datos para que no se quede sin espacio en disco y evitar que la secuencia falle debido a la pérdida de la posición del registro.

  3. Define una política de retención de datos para tu base de datos ejecutando estos comandos de Oracle Recovery Manager (RMAN):

    TARGET /
    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS;
    .

    Te recomendamos que conserves las copias de seguridad y los registros de archivo durante un mínimo de 4 días (lo ideal es 7 días).

  4. Vuelve al prompt de SQL de la herramienta de base de datos que estés usando para configurar la política de rotación de archivos de registro de Oracle. Recomendamos que el tamaño máximo del archivo de registro no supere los 512 MB.

  5. Habilita los datos de registros complementarios. Para ello, primero habilita el registro complementario mínimo a nivel de base de datos ejecutando el siguiente comando:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

    A continuación, elige si quieres activar el registro de tablas específicas o de toda la base de datos.

    Para registrar los cambios solo de tablas específicas, ejecuta el siguiente comando en cada tabla que quieras replicar:

    ALTER TABLE SCHEMA.TABLE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

    Haz los cambios siguientes:

    • SCHEMA: el nombre del esquema que contiene la tabla.
    • TABLE: el nombre de la tabla de la que quieres registrar los cambios.

    Para replicar la mayoría o todas las tablas de tu base de datos, te recomendamos que actives el registro de toda la base de datos. Ejecuta el siguiente comando para habilitar los datos de registros complementarios en toda la base de datos:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
  6. Concede los privilegios adecuados a la cuenta de usuario que se utilizará para conectarse a tu base de datos conectable. Para ello, ejecuta los siguientes comandos:

    GRANT SELECT ON GV_$LOG TO USER_NAME;
    GRANT SELECT ON GV_$LOGFILE TO USER_NAME;
    GRANT SELECT ON GV_$ARCHIVED_LOG TO USER_NAME;
    GRANT SELECT ON GV_$INSTANCE TO USER_NAME;
    GRANT SELECT ON GV_$STANDBY_LOG TO USER_NAME;
    GRANT SELECT ON V_$INSTANCE TO USER_NAME;
    GRANT SELECT ON V_$PDBS TO USER_NAME;
    GRANT SELECT ON V_$TRANSPORTABLE_PLATFORM TO USER_NAME;
    GRANT SELECT ON V_$DATABASE TO USER_NAME;
    GRANT SELECT ON V_$PARAMETER TO USER_NAME;
    GRANT SELECT ON COL$ TO USER_NAME;
    GRANT SELECT ON DBA_OBJECTS TO USER_NAME;
    GRANT SELECT ON DBA_TABLESPACES TO USER_NAME;
    GRANT SELECT ON DBA_ENCRYPTED_COLUMNS TO USER_NAME;
    GRANT SELECT ON DBA_EXTENTS TO USER_NAME;
    
    GRANT CONNECT TO USER_NAME;
    GRANT CREATE SESSION TO USER_NAME;
    GRANT SELECT ANY TABLE TO USER_NAME;
    GRANT READ ON DIRECTORY ONLINELOG_DIR TO USER_NAME;
    GRANT READ ON DIRECTORY ARCHIVELOG_DIR TO USER_NAME;

    Sustituye USER_NAME por el nombre de la cuenta de usuario que quieras usar para conectarte a tu base de datos.

Configurar una base de datos de Oracle conectable para LogMiner

Para configurar una base de datos conectable de Oracle alojada en un host propio para poder usarla con la API LogMiner, sigue estos pasos:

  1. Comprueba que tu base de datos se está ejecutando en el modo ARCHIVELOG. Para ello, ejecuta el siguiente comando desde el contenedor CDB$ROOT:

    SELECT LOG_MODE FROM V$DATABASE;

    1. Si el resultado es ARCHIVELOG, ve al paso 2.
    2. Si el resultado es NOARCHIVELOG, tendrás que habilitar el modo ARCHIVELOG en tu base de datos.
    3. Ejecuta los siguientes comandos cuando hayas iniciado sesión como SYSDBA:

      SHUTDOWN IMMEDIATE;
      STARTUP MOUNT;
      ALTER DATABASE ARCHIVELOG;
      ALTER DATABASE OPEN;
      
    4. Los archivos de registro archivados consumen espacio en disco, por lo que le recomendamos que configure el parámetro DB_RECOVERY_FILE_DEST_SIZE de su base de datos. Use este parámetro para especificar (en bytes) el límite estricto del espacio total que usarán los archivos de recuperación de la base de datos de destino. Al definir este parámetro, puede gestionar el equilibrio entre proteger la base de datos para que no se quede sin espacio en disco y evitar que la secuencia falle debido a la pérdida de la posición del registro.

  2. Para definir una política de conservación de datos en tu base de datos, ejecuta el siguiente comando de Oracle Recovery Manager (RMAN) desde el contenedor CDB$ROOT:

    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS;
    

    El comando define la política de conservación de datos de todas las bases de datos conectables de tu base de datos de contenedor.

    .

    Te recomendamos que conserves las copias de seguridad y los registros de archivo durante un mínimo de 4 días (lo ideal es 7 días).

  3. Vuelve al prompt de SQL de la herramienta de base de datos que estés usando para configurar la política de rotación de archivos de registro de Oracle. Recomendamos que el tamaño máximo del archivo de registro no supere los 512 MB.

  4. Habilita los datos de registros complementarios. Para ello, primero habilita el registro complementario en la base de datos a nivel de contenedor CDB$ROOT ejecutando el siguiente comando:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
    

    A continuación, elige si quieres activar el registro de tablas específicas o de toda la base de datos conectable.

    Para registrar los cambios solo de tablas específicas, conéctate al contenedor de la base de datos conectable y ejecuta el siguiente comando en cada tabla que quieras replicar:

    ALTER TABLE SCHEMA.TABLE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
    

    Haz los cambios siguientes:

    • SCHEMA: el nombre del esquema que contiene la tabla.
    • TABLE: el nombre de la tabla de la que quieres registrar los cambios.

    Si quieres replicar varias tablas o todas las tablas de tu base de datos, te recomendamos que actives el registro de toda la base de datos.

    Ejecuta el siguiente comando para habilitar los datos de registros complementarios en toda la base de datos:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
    
  5. Crea un usuario común. Un usuario común tiene la misma identidad en el contenedor CDB$ROOT y en las bases de datos conectables. Un usuario común puede conectarse y realizar operaciones en el contenedor CDB$ROOT y en cualquier base de datos conectable en la que tenga privilegios. El nombre de usuario común debe empezar por C## o c##.

  6. Concede los privilegios adecuados al usuario común que se utilizará para conectarse a tu base de datos. Se necesitan permisos diferentes en los niveles de contenedor CDB$ROOT y de base de datos conectable.

    • Conéctate al contenedor CDB$ROOT y ejecuta los siguientes comandos:
    GRANT CREATE SESSION TO USER_NAME;
    GRANT SET CONTAINER TO USER_NAME;
    GRANT SELECT ON SYS.V_$DATABASE TO USER_NAME;
    GRANT SELECT ON SYS.V_$LOGMNR_CONTENTS TO USER_NAME;
    GRANT EXECUTE ON DBMS_LOGMNR TO USER_NAME;
    GRANT EXECUTE ON DBMS_LOGMNR_D TO USER_NAME;
    GRANT LOGMINING TO USER_NAME;
    GRANT EXECUTE_CATALOG_ROLE TO USER_NAME;
    
    • Conéctate a la base de datos conectable y ejecuta los siguientes comandos:
    GRANT CREATE SESSION TO USER_NAME;
    GRANT SET CONTAINER TO USER_NAME;
    GRANT SELECT ANY TABLE TO USER_NAME;
    GRANT SELECT ON SYS.V_$DATABASE TO USER_NAME;
    GRANT SELECT ON SYS.V_$LOG TO USER_NAME; -- for primary databases
    GRANT SELECT ON SYS.V_$STANDY_LOG TO USER_NAME; -- for standby databases
    GRANT SELECT ON SYS.V_$LOGFILE TO USER_NAME;
    GRANT SELECT ON SYS.V_$ARCHIVED_LOG TO USER_NAME;
    GRANT SELECT ON DBA_SUPPLEMENTAL_LOGGING TO USER_NAME;
    GRANT SELECT ON SYS.V_$PARAMETER TO USER_NAME;
    
  7. Concede al usuario común SELECT acceso a la vista DBA_EXTENTS de tu base de datos. Este privilegio te permite usar el relleno basado en ROWID para tu fuente de Oracle:

    GRANT SELECT ON DBA_EXTENTS TO USER_NAME;
  8. Si tu base de datos usa el cifrado de datos transparente (TDE), concede los siguientes permisos:

    GRANT SELECT ON DBA_TABLESPACES TO USER_NAME;
    GRANT SELECT ON DBA_ENCRYPTED_COLUMNS TO USER_NAME;

Siguientes pasos

  • Consulte más información sobre cómo funciona Datastream con las fuentes de Oracle.