Configura una base de datos de Oracle autoadministrada para CDC

Para transmitir actualizaciones de captura de datos modificados (CDC) desde una base de datos de Oracle autoadministrada a un destino compatible, como BigQuery o Cloud Storage, puedes configurar Datastream para que lea tus archivos de registro de rehacer con el lector de registros binarios (versión preliminar) o la API de LogMiner. Para preparar tu base de datos, habilita el modo ARCHIVELOG, establece una política de retención de datos, habilita el registro complementario y otorga privilegios de usuario. Para obtener más información sobre estos métodos de CDC, consulta Trabaja con archivos de registro de rehacer de la base de datos de Oracle.

Configura tu base de datos de Oracle autoadministrada para el lector de registros binarios

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

  1. Crea una cuenta de usuario de base de datos para que Datastream la use para conectarse a tu base de datos:

    CREATE USER USER_NAME IDENTIFIED BY USER_PASSWORD;

    Reemplaza lo siguiente:

    • USER_NAME: Es el nombre de la cuenta de usuario de la base de datos que quieres usar para conectarte a tu base de datos.
    • USER_PASSWORD: Es la contraseña de la cuenta de usuario de la base de datos.
  2. Selecciona uno de los siguientes métodos para acceder a tus archivos de registro:

    • Administración automática de almacenamiento (ASM): Si seleccionas esta opción, debes crear una conexión de ASM dedicada y proporcionar sus detalles cuando crees tu perfil de conexión. La cuenta de usuario que se usa para la conexión de ASM debe tener el privilegio SYSASM.

      Para crear un usuario de ASM nuevo con el privilegio SYSASM, ejecuta los siguientes comandos:

      CREATE USER ASM_USER_NAME IDENTIFIED BY ASM_PASSWORD;
      GRANT SYSASM TO ASM_USER_NAME;

      Reemplaza lo siguiente:

      • ASM_USER_NAME: Es el nombre del usuario de ASM.
      • ASM_PASSWORD: Es la contraseña del usuario de ASM.
    • Directorios de bases de datos: Si seleccionas esta opción, debes 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 otorgar acceso de READ a los directorios para tu usuario de la 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;

    Reemplaza lo siguiente:

    • DIRECTORY_NAME_1: Es el nombre del directorio para los archivos de registro de rehacer en línea.
    • DIRECTORY_NAME_2: Es el nombre del directorio de los archivos de registro de rehacer archivados.
    • ONLINE_REDO_LOGS_PATH: Es la ruta de acceso al directorio en el que se almacenarán los archivos de registro de rehacer en línea.
    • ARCHIVED_REDO_LOGS_PATH: Es la ruta de acceso al directorio en el que se almacenarán los archivos de registro archivados.
    • USER_NAME: Es el nombre de la cuenta de usuario de la base de datos que se creó antes.

    Si seleccionas el método de lector 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 cuando crees tu transmisión.

  3. Verifica que tu base de datos se ejecute en modo ARCHIVELOG.

    Para ello, accede a tu base de datos de Oracle y ejecuta el siguiente comando en el mensaje de SQL:

    SELECT LOG_MODE FROM V$DATABASE;

    1. Si el resultado es ARCHIVELOG, continúa con el siguiente paso.
    2. Si el resultado es NOARCHIVELOG, deberás habilitar el modo ARCHIVELOG para tu base de datos.
    3. Ejecuta los siguientes comandos cuando accedas como SYSDBA:

      SHUTDOWN IMMEDIATE;
      STARTUP MOUNT;
      ALTER DATABASE ARCHIVELOG;
      ALTER DATABASE OPEN;
    4. Los archivos de registro archivados consumen espacio en el disco, por lo que te recomendamos configurar el parámetro DB_RECOVERY_FILE_DEST_SIZE para tu base de datos. Usa 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. Si configuras este parámetro, puedes administrar el equilibrio entre proteger la base de datos para que no se quede sin espacio en el disco y que la transmisión falle debido a la pérdida de la posición del registro.

  4. 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 conservar las copias de seguridad y archivar los registros durante un mínimo de 4 días y se recomiendan 7 días.

  5. Regresa al mensaje de SQL de la herramienta de base de datos que usas para configurar la política de rotación de archivos de registro de Oracle. Te recomendamos que establezcas un tamaño máximo de archivo de registro de no más de 512 MB.

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

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

    Luego, elige si quieres activar el registro para tablas específicas o para toda la base de datos.

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

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

    Reemplaza lo siguiente:

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

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

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
  7. Otorga los privilegios adecuados directamente a la cuenta de usuario que se usa para conectarse a tu base de datos. Ten en cuenta que estos otorgamientos no funcionan cuando se asignan a un rol, por ejemplo. Para hacerlo, 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;

    Reemplaza USER_NAME por el nombre de la cuenta de usuario de la base de datos que creaste antes.

Configura tu base de datos de Oracle autoadministrada para LogMiner

  1. Crea una cuenta de usuario de base de datos para que Datastream la use para conectarse a tu base de datos:

    CREATE USER USER_NAME IDENTIFIED BY USER_PASSWORD;

    Reemplaza lo siguiente:

    • USER_NAME: Es el nombre de la cuenta de usuario de la base de datos que quieres usar para conectarte a tu base de datos.
    • USER_PASSWORD: Es la contraseña de la cuenta de usuario de la base de datos.
  2. Verifica que tu base de datos se ejecute en modo ARCHIVELOG.

    Para ello, accede a tu base de datos de Oracle y ejecuta el siguiente comando en el mensaje de SQL:

    SELECT LOG_MODE FROM V$DATABASE;

    1. Si el resultado es ARCHIVELOG, continúa con el siguiente paso.
    2. Si el resultado es NOARCHIVELOG, debes habilitar el modo ARCHIVELOG para tu base de datos.
    3. Ejecuta los siguientes comandos cuando accedas como SYSDBA:

      SHUTDOWN IMMEDIATE;
      STARTUP MOUNT;
      ALTER DATABASE ARCHIVELOG;
      ALTER DATABASE OPEN;
    4. Los archivos de registro archivados consumen espacio en el disco, por lo que deberás configurar el parámetro DB_RECOVERY_FILE_DEST_SIZE para tu base de datos. Usa 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. Si configuras este parámetro, puedes administrar el equilibrio entre proteger la base de datos para que no se quede sin espacio en el disco y que la transmisión 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 conservar las copias de seguridad y archivar los registros durante un mínimo de 4 días y se recomiendan 7 días.

  4. Regresa al mensaje de SQL de la herramienta de base de datos que usas para configurar la política de rotación de archivos de registro de Oracle. Te recomendamos que establezcas un tamaño máximo de archivo de registro de no más de 512 MB.

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

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

    Luego, elige si quieres activar el registro para tablas específicas o para toda la base de datos.

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

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

    Reemplaza lo siguiente:

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

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

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
  6. Otorga los privilegios adecuados directamente a la cuenta de usuario que se usa para conectarse a tu base de datos. Ten en cuenta que estos otorgamientos no funcionan cuando se asignan a un rol, por ejemplo. Para hacerlo, ejecuta los siguientes comandos:

    GRANT EXECUTE_CATALOG_ROLE TO USER_NAME;
    GRANT CONNECT TO USER_NAME;
    GRANT CREATE SESSION 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_$STANDBY_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 SYS.V_$LOGMNR_CONTENTS TO USER_NAME;
    GRANT SELECT ON SYS.V_$PARAMETER TO USER_NAME;
    GRANT EXECUTE ON DBMS_LOGMNR TO USER_NAME;
    GRANT EXECUTE ON DBMS_LOGMNR_D TO USER_NAME;
    GRANT SELECT ANY TRANSACTION TO USER_NAME;
    GRANT SELECT ANY TABLE TO USER_NAME;

    Si tu base de datos usa la encriptación de datos transparente (TDE), otorga los siguientes permisos:

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

    Si tu organización no permite otorgar el permiso GRANT SELECT ANY TABLE, usa la solución que se describe en la sección Captura de datos modificados (CDC) de Oracle de la página de Preguntas frecuentes de Datastream.

    Si tu base de datos de origen es Oracle 12c o posterior, otorga el siguiente privilegio adicional:

    GRANT LOGMINING TO USER_NAME;
  7. Otorga a la cuenta de usuario SELECT acceso a la vista DBA_EXTENTS en tu base de datos. Este privilegio te permite usar el rellenado basado en ROWID para tu fuente de Oracle:

    GRANT SELECT ON DBA_EXTENTS TO USER_NAME;

¿Qué sigue?

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