Configurar una base de datos de Oracle de origen

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

Configurar una base de datos de Oracle de origen

Para poder usar Database Migration Service y extraer datos de tu base de datos de Oracle de origen, debes configurar la base de datos de la siguiente forma:

  • Configurar el registro de archivos para monitorizar los cambios en tu base de datos, como las operaciones INSERT, UPDATE, DELETE y RENAME.

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

    De forma predeterminada, Database Migration Service intenta acceder a todas las definiciones de objetos a través de DBA_VIEWS. El acceso a DBA_VIEWS se concede 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 ofrece el mayor grado de flexibilidad a la hora de definir un modelo de seguridad que se ajuste mejor a tus requisitos.

    Si quieres que Database Migration Service solo acceda a un subconjunto de tus definiciones de objetos, concede 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 conservación de datos para tu base de datos con el fin de determinar qué datos se archivarán, durante cuánto tiempo se conservarán y si se deben archivar o destruir al final del periodo de conservación.

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

Configurar una base de datos de Amazon RDS para Oracle

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

    SELECT LOG_MODE FROM V$DATABASE;

    1. Si el resultado es ARCHIVELOG, ve al paso c.

    2. Si el resultado es NOARCHIVELOG, tendrás que habilitar el modo ARCHIVELOG en tu base de datos.

    3. Los archivos de registro archivados consumen espacio en disco, por lo que te recomendamos que configures el parámetro DB_RECOVERY_FILE_DEST_SIZE de tu 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 la disponibilidad de la información y el espacio en disco.

    4. Para definir una política de conservación de datos en tu base de datos, ejecuta este comando:

      exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',96);

      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).

    5. Configura 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. Para obtener más información sobre cómo gestionar la rotación de registros, consulta el artículo Trabajar con archivos de registro de 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 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.

    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. Concede los permisos adecuados a la cuenta de usuario que se utilizará para conectarse a tu base de datos. Para ello, 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 la base de datos de origen es Oracle 12c o una versión posterior, concede el siguiente privilegio adicional:

    GRANT LOGMINING TO USER_NAME;

Configurar una base de datos de Oracle autohospedada

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

    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 te recomendamos que configures el parámetro DB_RECOVERY_FILE_DEST_SIZE de tu 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 la disponibilidad de la información y el espacio en disco.

  2. Define una política de conservación de datos en tu base de datos ejecutando el siguiente comando de Oracle Recovery Manager (RMAN):

    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).

  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 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;
  5. Concede los permisos adecuados a la cuenta de usuario que se utilizará para conectarse a tu base de datos. Para ello, 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 la base de datos de origen es Oracle 12c o una versión posterior, concede el siguiente privilegio adicional:

    GRANT LOGMINING TO USER_NAME;

Configurar una base de datos conectable de Oracle autohospedada

Database Migration Service admite la arquitectura multi-tenant 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.

Para configurar una base de datos conectable de Oracle alojada en un host propio de forma que puedas usarla con Database Migration Service, 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 te recomendamos que configures el parámetro DB_RECOVERY_FILE_DEST_SIZE de tu 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 la disponibilidad de la información y el espacio en disco.

  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;

    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 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.

    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;
  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 normal puede conectarse y realizar operaciones en la raíz 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 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;