Saltar al contenido

¿Por qué mi tarea de AWS DMS CDC que usa Oracle como origen falla y muestra el error "Sequence does not exist"?

7 minutos de lectura
0

Quiero usar AWS Database Migration Service (AWS DMS) para migrar datos de mi base de datos local o de Amazon Relational Database Service (Amazon RDS) para Oracle. La tarea de captura de datos de cambios (CDC) de AWS DMS falla y se muestra el mensaje de error "Sequence does not exist".

Descripción corta

Cuando utilizas una base de datos de Oracle como origen para la tarea de migración, AWS DMS obtiene los datos de la tabla en la fase de carga completa. En la fase de CDC, AWS DMS lee los registros de rehacer archivados. A continuación, AWS DMS captura los registros de rehacer de la base de datos Oracle de origen y aplica solo los cambios confirmados a la base de datos de destino.

Si AWS DMS busca el registro de rehacer en el destino incorrecto o cuando DEL es YES y la secuencia de archivado no existe en la base de datos de Oracle de origen, es posible que se muestre un mensaje de error. El mensaje de error es similar al siguiente:

"03980512: 2022-05-23T12:33:11 [SOURCE_CAPTURE ]E: Archived Redo log with the sequence 232488 does not exist, thread 1 [1022318] (oradcdc_thread.c:624"

Resolución

Nota: La base de datos local de origen o RDS para la base de datos de Oracle purga los registros de rehacer de los archivos. AWS DMS no purga los registros de rehacer de archivos. En su lugar, AWS DMS confirma que no puede encontrar el registro cuando intenta procesar el siguiente LSN.

Comprueba si el archivo de registro y la secuencia de almacenamiento existen

Sigue estos pasos:

  1. Para comprobar si el número de secuencia de registro (LSN) del archivo está disponible en el servidor de base de datos Oracle de origen, ejecuta el siguiente comando:
    select name, dest_id, thread#, sequence#, archived, applied, deleted, status, first_time, next_time, completion_time from v$archived_log where sequence# = 232488;
    Nota: Sustituye 232488 por el LSN del archivo en tu error de registro de secuencias.
  2. Comprueba la columna DEL.
    Nota: Si la columna indica NO, el LSN del archivo existe en la base de datos de origen. Si indica YES y utilizas un servidor Oracle local, el LSN del archivo no existe y es posible que Oracle lo haya purgado del origen. Continúa con la sección DEL es YES y la secuencia de registro de archivos no existe en la base de datos Oracle de origen de este artículo. En Amazon RDS, si Oracle ha purgado el LSN del archivo, la columna DEL mostrará NO. Esta información proviene del archivo de control.
  3. Si usas Amazon RDS para Oracle, comprueba que el registro de rehacer existe en Amazon RDS. Ejecuta la siguiente consulta:
    select * from table(rdsadmin.rds_file_util.listdir('ARCHIVELOG_DIR')) where filename='example-redolog.arc' order by mtime desc;
    Nota: Sustituye example-redolog.arc por el nombre del registro de rehacer archivado. Si ARCHIVELOG_DIR no existe, crea ARCHIVELOG_DIR y vuelve a ejecutar la consulta.

AWS DMS busca el registro de rehacer en el destino incorrecto

De forma predeterminada, AWS DMS captura los registros de rehacer en DEST_ID 1. La tarea de AWS DMS falla porque busca el registro de rehacer en DEST_ID 1, pero el archivo del registro de rehacer existe en un DEST_ID diferente.

Para cambiar el valor DEST_ID, sigue estos pasos:

  1. Para comprobar el valor DEST_ID de la secuencia, ejecuta la siguiente consulta en la base de datos de origen:

    select name, dest_id, thread#, sequence#, archived, applied, deleted, status, first_time, next_time, completion_time from v$archived_log where sequence# in (232488);

    Nota: Sustituye 232488 por tu LSN de archivo.
    Ejemplo de resultado para la consulta anterior:

    NAME DEST_ID THREAD# SEQUENCE# ARC APPLIED DEL S FIRST_TIM NEXT_TIME COMPLETIO --------------------------------------------- ---------- ---------- ---------- --- --------- --- - --------- --------- --------- /orafra/prdsvbo/arc/1_232488_950180179.arc 2 1 232488 YES YES NO A 07-JUN-22 07-JUN-22 07-JUN-22
  2. Comprueba la columna DEST_ID y, a continuación, comprueba los registros de tu tarea de DMS para verificar el DEST_ID.
    Registros de ejemplo:

    01788702: 2022-06-07T17:10:31:658376 [SOURCE_CAPTURE ]I: Used Oracle archived Redo log destination id is '1' (oracdc_merger.c:639)
    01788702: 2022-06-07T17:10:31:658420 [SOURCE_CAPTURE ]I: Oracle instance uses more than one archived Redo log destination id. Please configure the correct destination id, if Redo logs of '1' destination cannot be accessed (oracdc_merger.c:642)
  3. Para cambiar el DEST_ID que utiliza AWS DMS, añade el atributo de conexión adicional (ECA) additionalArchivedLogDestId a tu punto de enlace de origen.
    Nota: Asegúrate de que el valor de esta ECA sea el valor DEST_ID encontrado en el paso anterior. Para obtener más información, consulta Configuración del punto final cuando se utiliza Oracle como fuente de AWS DMS.

  4. Reanuda la tarea de DMS. Los registros muestran que AWS DMS ahora puede captura el LSN de rehacer disponible a partir de tu DEST_ID actualizado.
    Registros de ejemplo:

    01898667: 2022-06-08T05:45:08:535588 [SOURCE_CAPTURE ]D: Going to retrieve archived REDO log with sequence 232488, thread 1 (oradcdc_thread.c:510)
    01898667: 2022-06-08T05:45:08:535607 [SOURCE_CAPTURE ]T: Use a prepared statement to access v$archived_log, thread 1 (oradcdc_thread.c:587)
    01898667: 2022-06-08T05:45:08:598396 [SOURCE_CAPTURE ]D: Going to open Redo Log with original name '/orafra/prdsvbo/arc/1_232488_950180179.arc', thread id '1' (oradcdc_redo.c:492)
    01898667: 2022-06-08T05:45:08:599614 [SOURCE_CAPTURE ]D: archived Redo log '/orafra/prdsvbo/arc/1_232488_950180179.arc' with sequence 232488 is opened, thread id '1' (oradcdc_redo.c:747)

DEL es YES y la secuencia de registro de archivos no existe en la base de datos Oracle de origen

Si DEL es YES, AWS DMS ha purgado la secuencia de registro del archivo de la base de datos Oracle de origen. Las instancias de Oracle eliminan los archivos de registro de archivado para minimizar el espacio que ocupan los registros de archivado.

Aumento del periodo de retención de archivos para la base de datos Oracle local

Si has programado Recovery Manager (RMAN) para eliminar noprompt archivelog hasta SYSDATE-1, esta programación eliminará todos los archivos de registro de almacenamiento de más de 1 día. Para aumentar este periodo, modifica la programación a SYSDATE-2 o desactívala.

Para ver tus configuraciones actuales y aumentar la retención de registros de archivos, sigue estos pasos:

  1. Conéctate a RMAN.
  2. Para mostrar todas las configuraciones de la base de datos de Oracle, ejecuta la siguiente consulta:
    RMAN> SHOW ALL;
    Nota: El valor predeterminado de la política de eliminación de Archivelog es NONE.
  3. Para aumentar el periodo de retención, ejecuta el siguiente comando:
    CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 2 TIMES TO SBT;
    Nota: Sustituye SBT por el tipo de dispositivo de almacenamiento, como DISK o ANY.
  4. Restaura los registros de rehacer archivados de la copia de seguridad y, a continuación, reanuda la tarea de DMS.
    Nota: Si no tienes una copia de seguridad de los registros de archivos, reinicia la tarea desde la fase de carga completa y vuelve a iniciar la migración.

Aumento del periodo de retención de archivos y descarga de los registros de rehacer archivados para Amazon RDS

Amazon RDS elimina los archivos de registro que no se encuentran dentro del periodo de retención del registro de archivos. Amazon RDS también guarda una copia en un bucket de Amazon Simple Storage Solution (Amazon S3) en función de tu política de retención de copias de seguridad de Amazon RDS. Puedes usar esta copia para realizar una restauración puntual.

Sigue estos pasos:

  1. Para ver el periodo actual de retención de registros de archivos, ejecuta la siguiente consulta:

    exec rdsadmin.rdsadmin_util.show_configuration;
  2. Para aumentar el periodo de retención del registro de archivos, ejecuta el siguiente comando:

    begin rdsadmin.rdsadmin_util.set_configuration( name => 'archivelog retention hours', value => '24');
    end;
    /
    commit;

    Nota: Sustituye 24 por un valor superior al periodo de retención de registros de archivos actual.

  3. Para comprobar el aumento del periodo de retención y encontrar los nombres de los archivos de registro, ejecuta el siguiente comando:

    exec rdsadmin.rdsadmin_util.show_configuration;
  4. Descarga tus registros de rehacer archivados.
    Nota: Todos los registros de rehacer que siguen a tu LSN deben estar presentes en el origen para poder reanudar correctamente la tarea de AWS DMS. Si no puedes restaurar la secuencia de registro de archivos que falta, reinicia la tarea desde la fase de carga completa y vuelve a iniciar la migración.

Información relacionada

Uso de una base de datos Oracle como fuente para AWS DMS

Realización de tareas comunes relacionadas con el registro para instancias de base de datos Oracle

OFICIAL DE AWSActualizada hace 5 meses
1 comentario

This article was reviewed and updated on 2026-04-03.

EXPERTO

respondido hace 7 días

Contenido relevante