AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
为什么我使用 Oracle 作为源的 AWS DMS CDC 任务失败并显示“Sequence does not exist”错误?
我想使用 AWS Database Migration Service (AWS DMS) 迁移本地或 Amazon Relational Database Service (Amazon RDS) for Oracle 数据库的数据。AWS DMS 变更数据捕获 (CDC) 任务失败并显示“Sequence does not exist”错误消息。
简述
当您使用 Oracle 数据库作为迁移任务的源时,AWS DMS 将在完全加载阶段从表中获取数据。在 CDC 阶段,AWS DMS 从存档的重做日志中读取数据。然后,AWS DMS 从源 Oracle 数据库捕获重做日志,并仅将已提交的更改应用于目标数据库。
如果 AWS DMS 在错误的目标中查找重做日志,或者 DEL 为 YES(是)且源 Oracle 数据库中不存在存档日志序列,则您可能会收到一条错误消息。错误消息类似于以下示例:
“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”
解决方法
注意: 源本地数据库或 RDS for Oracle 数据库会清除存档重做日志。AWS DMS 不会清除存档重做日志。相反,AWS DMS 会确认在尝试处理下一个 LSN 时找不到日志。
检查存档日志文件和序列是否存在
完成以下步骤:
- 要检查您的存档日志序列号 (LSN) 在源 Oracle 数据库服务器上是否可用,请运行以下命令:
注意: 将序列日志错误中的存档 LSN 替换为 232488。select name, dest_id, thread#, sequence#, archived, applied, deleted, status, first_time, next_time, completion_time from v$archived_log where sequence# = 232488; - 检查 DEL 列。
注意: 如果该列列出 NO(否),则存档 LSN 存在于源数据库中。如果列出 YES(是),并且您使用本地 Oracle 服务器,则存档 LSN 不存在,Oracle 可能已将其从源中清除。继续查看本文的 DEL 为 YES(是)且源 Oracle 数据库中不存在存档日志序列部分。在 Amazon RDS 中,如果 Oracle 已清除存档 LSN,则 DEL 列会显示 NO(否)。此信息来自控制文件。 - 如果您使用 Amazon RDS for Oracle,请检查 Amazon RDS 中是否存在重做日志。运行以下查询:
注意: 将 example-redolog.arc 替换为您的存档重做日志名称。如果 ARCHIVELOG_DIR 不存在,则创建 ARCHIVELOG_DIR 并再次运行查询。select * from table(rdsadmin.rds_file_util.listdir('ARCHIVELOG_DIR')) where filename='example-redolog.arc' order by mtime desc;
AWS DMS 在错误的目的地寻找重做日志
默认情况下,AWS DMS 会捕获 DEST_ID 1 上的重做日志。AWS DMS 任务失败,因为它在 DEST_ID 1 中寻找重做日志,但重做日志文件存在于其他 DEST_ID 中。
要更改 DEST_ID 值,请完成以下步骤:
-
要检查序列 DEST_ID 值,请在源数据库上运行以下查询:
select name, dest_id, thread#, sequence#, archived, applied, deleted, status, first_time, next_time, completion_time from v$archived_log where sequence# in (232488);注意: 将 232488 替换为您的存档 LSN。
先前查询的输出示例: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 -
检查 DEST_ID 列,然后检查您的 DMS 任务日志以验证 DEST_ID。
日志示例: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) -
要更改 AWS DMS 使用的 DEST_ID,请将 additionalArchivedLogDestId 额外连接属性 (ECA) 添加到您的源端点。
注意: 确保此 ECA 的值是上一步中找到的 DEST_ID 值。有关更多信息,请参阅 Endpoint settings when using Oracle as a source for AWS DMS(使用 Oracle 作为 AWS DMS 源时的端点设置)。 -
继续 DMS 任务。日志显示,AWS DMS 现在可以从您更新的 DEST_ID 中捕获可用的重做 LSN。
日志示例: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 为 YES(是)且源 Oracle 数据库中不存在存档日志序列
如果 DEL 为 YES(是),则 AWS DMS 已从源 Oracle 数据库中清除存档日志序列。Oracle 实例会删除存档日志文件,以尽可能减少存档日志占用的空间。
延长本地 Oracle 数据库的存档保留期
如果您已安排 Recovery Manager (RMAN) 在 SYSDATE-1 之前删除 noprompt 存档日志,则此计划将删除所有超过 1 天的存档日志文件。要增加此时间,请将计划修改为 SYSDATE-2,或关闭计划。
要查看您的当前配置并增加存档日志保留期,请完成以下步骤:
- 连接到 RMAN。
- 要显示 Oracle 数据库上的所有配置,请运行以下查询:
注意: 默认的存档日志删除策略值为 NONE(无)。RMAN> SHOW ALL; - 要延长保留期,请运行以下命令:
注意: 将 SBT 替换为您的存储设备类型,例如 DISK(磁盘)或 ANY(任意)。CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 2 TIMES TO SBT; - 恢复备份存档的重做日志,然后继续 DMS 任务。
注意: 如果您没有备份存档重做日志,请从完全加载阶段重新启动任务并重新开始迁移。
延长存档保留期并下载 Amazon RDS 的存档重做日志
Amazon RDS 会删除不在存档日志保留期内的存档日志文件。根据您的 Amazon RDS 备份保留策略,Amazon RDS 还会在 Amazon Simple Storage Solution (Amazon S3) 存储桶中保留一份副本。您可以使用此副本进行时间点恢复。
完成以下步骤:
-
要查看您当前的存档日志保留期,请运行以下查询:
exec rdsadmin.rdsadmin_util.show_configuration; -
要延长存档日志保留期,请运行以下命令:
begin rdsadmin.rdsadmin_util.set_configuration( name => 'archivelog retention hours', value => '24'); end; / commit;注意: 将 24 替换为大于当前存档日志保留期的值。
-
要验证您的延长保留期并查找您的日志文件名,请运行以下命令:
exec rdsadmin.rdsadmin_util.show_configuration; -
下载您的存档重做日志。
注意: 在成功恢复 AWS DMS 任务之前,LSN 后面的所有重做日志都必须在源上。如果您无法恢复丢失的存档日志序列,请从完全加载阶段重新启动任务并重新开始迁移。
相关信息
Using an Oracle database as a source for AWS DMS(使用 Oracle 数据库作为 AWS DMS 的源)
- 语言
- 中文 (简体)

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