Configurar la base de datos de Oracle de origen

Descripción general

Database Migration Service admite migraciones continuas desde bases de datos de origen hasta bases de datos de destino de AlloyDB para PostgreSQL.

Entre las bases de datos de origen admitidas para Oracle, se incluyen las siguientes versiones:

  • Oracle 11g, versión 11.2.0.4
  • Oracle 12c, versión 12.1.0.2
  • Oracle 12c, versión 12.2.0.1
  • Oracle 18c
  • Oracle 19c
  • Oracle 21c
  • Clústeres de aplicaciones reales (RAC) de Oracle

Database Migration Service aprovecha la API de Oracle LogMiner, que forma parte de la base de datos de Oracle, para consultar los archivos de registro de rehacer archivados. Los archivos de registro de rehacer contienen información sobre el historial de actividad en una base de datos. Para obtener más información sobre cómo funciona Database Migration Service con estos archivos de registro, consulta Acerca del flujo de datos para las migraciones de Oracle.

Configurar la base de datos de Oracle de origen

Antes de poder usar Database Migration Service para extraer datos de tu base de datos de Oracle de origen, debes configurar tu base de datos de la siguiente manera:

  • Configura el registro de archivos para realizar un seguimiento de los cambios en tu base de datos, como las operaciones INSERT, UPDATE, DELETE y RENAME.

  • Otorgar los privilegios adecuados a la cuenta de usuario que se usará para conectarse a tu base de datos y acceder a los objetos de esquema y código

    De forma predeterminada, Database Migration Service intenta acceder a todas tus definiciones de objetos a través de DBA_VIEWS. El acceso a DBA_VIEWS se otorga con el privilegio SELECT ANY DICTIONARY. Si la cuenta de usuario de migración no puede acceder a las vistas de DBA, Database Migration Service recurre a ALL_VIEWS. Este enfoque te brinda el mayor grado de flexibilidad con respecto a la definición de un modelo de seguridad que mejor se adapte a tus requisitos.

    Si deseas que Database Migration Service solo acceda a un subconjunto determinado de las definiciones de objetos, otorga al usuario de migración un rol con una configuración de privilegios más detallada en lugar de SELECT ANY DICTIONARY.

  • Definir una política de retención de datos para tu base de datos para determinar qué datos se archivarán, durante cuánto tiempo se conservarán y si los datos al final del período de retención se archivarán o destruirán

Actualmente, Database Migration Service funciona con los siguientes tipos de bases de datos de Oracle:

Configura una base de datos de Amazon RDS para Oracle

  1. Verifica que tu base de datos se ejecute en modo ARCHIVELOG. Para hacerlo, ejecuta el comando siguiente:

    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 la disponibilidad de la información y el espacio en el disco.

    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 de no más de 512 MB. Para obtener más información sobre cómo administrar la rotación del registro, consulta Cómo trabajar con archivos de registro de rehacer de la base de datos de Oracle.

  2. Habilita los datos de registros complementarios. Para ello, primero habilita el registro complementario en 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 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;
    GRANT SELECT ANY DICTIONARY TO USER_NAME;
    GRANT SELECT ON DBA_EXTENTS TO USER_NAME;

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

    GRANT LOGMINING TO USER_NAME;

Configura una base de datos de Oracle autoalojada

  1. Verifica que tu base de datos se ejecute en modo ARCHIVELOG. Para hacerlo, ejecuta el comando siguiente:

    SELECT LOG_MODE FROM V$DATABASE;

    1. Si el resultado es ARCHIVELOG, continúa con el paso 2.

    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 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 la disponibilidad de la información y el espacio en el disco.

  2. Ejecuta el siguiente comando de Oracle Recovery Manager (RMAN) para definir una política de retención de datos para tu base de datos:

    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.

  3. 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. Recomendamos establecer un tamaño máximo de archivo de registro de no más de 512 MB.

  4. Habilita los datos de registros complementarios. Para ello, primero habilita el registro complementario en la base de datos ejecutando el siguiente comando:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

    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.

    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;
  5. 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 CONNECT TO USER_NAME;
    GRANT CREATE SESSION TO USER_NAME;
    GRANT SELECT ON SYS.V_$DATABASE 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_$LOGMNR_LOGS 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;
    GRANT SELECT ANY DICTIONARY TO USER_NAME;
    GRANT EXECUTE_CATALOG_ROLE TO USER_NAME;
    GRANT SELECT ON DBA_EXTENTS TO USER_NAME;

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

    GRANT LOGMINING TO USER_NAME;

Configura una base de datos de Oracle con complementos autoalojada

Database Migration Service admite la arquitectura multiusuario de Oracle, en la que una sola base de datos de contenedor (CDB) contiene una o más bases de datos conectables (PDB). Cada base de datos conectable es independiente, tiene un ID y un nombre únicos, y se puede administrar de forma independiente.

Para configurar una base de datos de Oracle con conectores autoalojada que puedas usar con Database Migration Service, sigue estos pasos:

  1. Verifica que tu base de datos se ejecute en 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, continúa con el paso 2.

    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 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 la disponibilidad de la información y el espacio en el disco.

  2. Ejecuta el siguiente comando de Oracle Recovery Manager (RMAN) desde el contenedor CDB$ROOT para definir una política de retención de datos para tu base de datos:

    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.

  3. 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. Recomendamos establecer un tamaño máximo de archivo de registro de no más de 512 MB.

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

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

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

    Para registrar los cambios solo de tablas específicas, conéctate al contenedor de base de datos intercambiable y 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.

    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;
  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 a la raíz y realizar operaciones en ella, y en cualquier base de datos conectable en la que tenga privilegios. El nombre de usuario común debe comenzar con C## o c##.

  6. Otorga los privilegios adecuados al usuario común que se usará para conectarse a tu base de datos. Se requieren diferentes permisos a nivel del contenedor CDB$ROOT y de la base de datos intercambiable.

    • 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 con enchufes 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 ANY DICTIONARY TO USER_NAME;
      GRANT SELECT ON SYS.V_$DATABASE 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 DBA_EXTENTS TO USER_NAME;