Configura una base de datos de Oracle de Amazon RDS

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

Para obtener más información sobre el lector de registros binarios y la API de LogMiner, consulta Trabaja con archivos de registro de rehacer de la base de datos de Oracle.

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

Configura tu base de datos de Oracle de Amazon RDS para el lector de registros binarios

En el caso de las fuentes de Amazon RDS, Datastream solo admite objetos de directorio de la base de datos como método de acceso de registro para el lector de registros binarios. Debes crear los directorios de la base de datos que apuntan a los archivos de registro de rehacer en línea y a los archivos de registro archivados. Los nombres de estos directorios son estáticos y no se pueden cambiar más adelante. Debes proporcionar estos nombres a Datastream cuando crees tu flujo.

  1. Conéctate a tu instancia de Amazon RDS de origen.

  2. En la terminal o en el panel de Amazon RDS, ejecuta los siguientes comandos:

    BEGIN
    rdsadmin.rdsadmin_master_util.create_archivelog_dir;
    END;
    BEGIN
    rdsadmin.rdsadmin_master_util.create_onlinelog_dir;
    END;
    COMMIT;
    GRANT READ ON DIRECTORY ONLINELOG_DIR TO USER_NAME;
    GRANT READ ON DIRECTORY ARCHIVELOG_DIR TO USER_NAME;
  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 paso c.
    2. Si el resultado es NOARCHIVELOG, deberás habilitar el modo ARCHIVELOG para tu base de datos.
    3. Los archivos de registro archivados consumen espacio en el disco, por lo que te recomendamos que configures 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 la compensación 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. Ejecuta este comando para definir una política de retención de datos para tu base de datos:
      exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',96);
      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. Configura la política de rotación de archivos de registro de Oracle. Recomendamos establecer un tamaño máximo de archivo de registro en un valor inferior a 1 GB.
  4. 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:

    exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');

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

    Para registrar los cambios solo de tablas específicas, ejecuta el siguiente comando para 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. En el mensaje de SQL, ejecuta el siguiente comando para habilitar los datos de registros complementarios en toda la base de datos:

    exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD','ALL');
  5. Otorga los siguientes privilegios al usuario de la base de datos:

    GRANT CONNECT TO USER_NAME;
    GRANT CREATE SESSION TO USER_NAME;
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE','USER_NAME','SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ARCHIVED_LOG','USER_NAME','SELECT');
    GRANT SELECT ANY TRANSACTION TO USER_NAME;
    GRANT SELECT ANY TABLE TO USER_NAME;
    GRANT SELECT ON DBA_EXTENTS TO USER_NAME;

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

Configura tu base de datos de Oracle de Amazon RDS para LogMiner

  1. 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 paso c.
    2. Si el resultado es NOARCHIVELOG, deberás habilitar el modo ARCHIVELOG para tu base de datos.
    3. Los archivos de registro archivados consumen espacio en el disco, por lo que te recomendamos que configures 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 la compensación 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. Ejecuta este comando para definir una política de retención de datos para tu base de datos:
      exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',96);
      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. Configura la política de rotación de archivos de registro de Oracle. Recomendamos establecer un tamaño máximo de archivo de registro en un valor inferior a 1 GB.
  2. 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:

    exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');

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

    Para registrar los cambios solo de tablas específicas, ejecuta el siguiente comando para 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.

    En el mensaje de SQL, ejecuta el siguiente comando para habilitar los datos de registros complementarios en toda la base de datos:

    exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD','ALL');
  3. Otorga los privilegios adecuados a la cuenta de usuario que se usará para conectarse a tu base de datos. Para hacerlo, ejecuta los siguientes comandos:

    GRANT EXECUTE_CATALOG_ROLE TO USER_NAME;
    GRANT CONNECT TO USER_NAME;
    GRANT CREATE SESSION TO USER_NAME;
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE','USER_NAME','SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ARCHIVED_LOG','USER_NAME','SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_LOGS','USER_NAME','SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_CONTENTS','USER_NAME','SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR','USER_NAME','EXECUTE');
    exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR_D','USER_NAME','EXECUTE');
    GRANT SELECT ANY TRANSACTION TO USER_NAME;
    GRANT SELECT ANY TABLE 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;
  4. Otorga a la cuenta de usuario SELECT acceso a la vista DBA_EXTENTS en tu base de datos. Este privilegio te permite usar el reabastecimiento 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.