¿Por qué se produjo un error en mi tarea de AWS DMS al utilizar Binary Reader para Amazon RDS para Oracle?

4 minutos de lectura
0

¿Por qué se produjo un error en mi tarea de AWS Database Migration Service (AWS DMS) al utilizar Binary Reader para Amazon Relational Database Service (Amazon RDS) para Oracle?

Descripción breve

Durante la fase de captura de datos de cambios (CDC), Oracle proporciona dos métodos para leer los registros de rehacer: Oracle LogMiner y Binary Reader. Oracle LogMiner es una interfaz SQL que accede a los registros de rehacer archivados y en línea. Binary Reader es una característica de AWS DMS que lee y analiza directamente los registros de rehacer.

Cuando se utiliza Binary Reader para migraciones con muchos cambios, el impacto en la fuente de Oracle es menor en comparación con el uso de Oracle LogMiner. Esto se debe a que los registros de archivo se copian y, a continuación, se analizan en la instancia de replicación. Para las migraciones que tienen muchos cambios, Binary Reader suele tener un mejor rendimiento de CDC que Oracle LogMiner. Asegúrese de aprovisionar suficiente ancho de banda de la red para evitar atascos en el rendimiento de la red.

Si no se cumplen los requisitos previos al utilizar Binary Reader, puede recibir dos tipos de errores:

  • Errores de permisos
  • Errores de atributos de conexión adicionales

Resolución

Errores de permisos

AWS DMS utiliza Binary Reader mediante la creación de directorios en la base de datos de origen. Por lo tanto, la cuenta de usuario de AWS DMS debe tener los privilegios necesarios para acceder al punto de conexión de Oracle de origen y crear los directorios necesarios. Si AWS DMS no tiene permisos, verá entradas de registro similares a las siguientes:

Mensajes

«[SOURCE_CAPTURE]E: Error OCI ’ORA-00604: se produjo un error en el nivel 1 de rMeecursive SQL ORA-20900: Se ha utilizado una ruta no válida para el directorio: /rdsdbdata/log/arch ORA-06512: en ’RDSADMIN.RDSADMIN’, línea 321 ORA-06512: en la línea 2' [1022307] (oradcdc_bfilectx.c:164)»

Para resolver estos errores, utilice el usuario principal de Amazon RDS como usuario de AWS DMS. Los directorios se crean automáticamente cuando comienza a ejecutarse una tarea de AWS DMS. Si no se crean los directorios, primero inicie sesión en la base de datos de Oracle con el usuario principal. A continuación, ejecute estos comandos para comprobar si se pueden crear estos directorios:

SQL> exec rdsadmin.rdsadmin_master_util.create_archivelog_dir;
SQL> exec rdsadmin.rdsadmin_master_util.create_onlinelog_dir;

Para comprobar los resultados, consulte la tabla all_directories:

SQL> select directory_path from all_directories where directory_name in ('ONLINELOG_DIR','ARCHIVELOG_DIR');
DIRECTORY_PATH
--------------------------------------------------------------------------------
/rdsdbdata/log/arch
/rdsdbdata/log/onlinelog

Tras crear los directorios ONLINELOG_DIR y ARCHIVELOG_DIR necesarios y reinicie la tarea de AWS DMS.

Errores de atributos de conexión adicionales

Si usa Binary Reader, pero le faltan los atributos de conexión adicionales necesarios para su fuente de Oracle, verá esta entrada de registro:

Mensajes

«[TASK_MANAGER]E: ORA-00604: se produjo un error en el nivel 1 de SQL recursivo ORA-20900: Se ha utilizado una ruta no válida para el directorio: awsdms_dir_test ORA-06512: en ’RDSADMIN.RDSADMIN’, línea 321 ORA-06512: en la línea 2; configuración de base de datos de Oracle Binary Reader de RDS no válida, replacePathPrefix debe establecerse en TRUE y usePathPrefix en ’/rdsdbdata/log/’; configuración de base de datos de Oracle Binary Reader de RDS no válida, useAlternateFolderForOnline debe configurarse en TRUE; configuración de base de datos de Oracle Binary Reader de RDS no válida, OraclePathPrefix no debe estar vacío; configuración de base de datos de Oracle Binary Reader de RDS no válida; error al preparar el componente de streaming ’st_0_4MGMBIOJCILNOU3UHICCDBCNFQ’.; No se puede inicializar la subtarea; el componente de streaming ’st_0_4MGMBIOJCILNOU3UHICCDBCNFQ’ finalizó en [1020418] (replicationtask.c:2680)»

Para utilizar Binary Reader para capturar datos de cambios para una fuente de Amazon RDS para Oracle, añada estos atributos de conexión adicionales al punto de conexión de origen:

useLogMinerReader=N;useBfile=Y;replacePathPrefix=true;usePathPrefix=/rdsdbdata/log/;useAlternateFolderForOnline=true;oraclePathPrefix=/rdsdbdata/db/ORCL_A/;accessAlternateDirectly=false

Información relacionada

Privilegios de cuenta de usuario necesarios en un origen de Oracle administrado por AWS para AWS DMS

Acceso a los registros de rehacer en línea y archivados

Migración de una base de datos de Oracle local a Amazon RDS para PostgreSQL mediante Oracle Bystander y AWS DMS

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año