本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Oracle 端点故障排除
本节包含特定于 Oracle 的复制场景。
源读取暂停
在以下情况下,Amazon DMS 会暂停从 Oracle 源读取。此行为是设计使然。您可以使用任务日志调查这种情况的原因。在任务日志中查找类似于以下内容的消息。有关使用任务日志的更多信息,请参阅查看和管理 Amazon DMS 任务日志。
SORTER 消息:这表明 DMS 正在缓存复制实例上的事务。有关更多信息,请参阅下面的任务日志中的 SORTER 消息。
调试任务日志:如果 DMS 中断了读取进程,则您的任务会将以下消息重复写入调试任务日志,而不会更改上下文字段或时间戳:
Binary Reader:
[SOURCE_CAPTURE ]T: Produce CTI event: context '00000020.f23ec6e5.00000002.000a.00.0000:190805.3477731.16' xid [00000000001e0018] timestamp '2021-07-19 06:57:55' thread 2 (oradcdc_oralog.c:817)
Logminer:
[SOURCE_CAPTURE ]T: Produce INSERT event: object id 1309826 context '000000000F2CECAA010000010005A8F500000275016C0000000000000F2CEC58' xid [000014e06411d996] timestamp '2021-08-12 09:20:32' thread 1 (oracdc_reader.c:2269)
Amazon DMS 为每个新的重做或存档日志操作记录以下消息。
00007298: 2021-08-13T22:00:34 [SOURCE_CAPTURE ]I: Start processing archived Redo log sequence 14850 thread 2 name XXXXX/XXXXX/ARCHIVELOG/2021_08_14/thread_2_seq_14850.22977.1080547209 (oradcdc_redo.c:754)
如果源有新的重做或归档日志操作,并且 Amazon DMS 没有将这些消息写入日志,则这意味着任务没有处理事件。
重做生成速率高
如果您的任务正在处理重做或存档日志,但源延迟仍然很高,请尝试确定重做日志的生成速率和生成模式。如果您有很高的重做日志生成水平,这会增加源延迟,因为任务会读取所有重做和存档日志,以便提取与复制的表相关的更改。
要确定重做生成速率,请使用以下查询。
每日重做生成速率:
select trunc(COMPLETION_TIME,'DD') Day, thread#, round(sum(BLOCKS*BLOCK_SIZE)/1024/1024/1024) GB, count(*) Archives_Generated from v$archived_log where completion_time > sysdate- 1 group by trunc(COMPLETION_TIME,'DD'),thread# order by 1;
每小时重做生成速率:
Alter session set nls_date_format = 'DD-MON-YYYY HH24:MI:SS'; select trunc(COMPLETION_TIME,'HH') Hour,thread# , round(sum(BLOCKS*BLOCK_SIZE)/1024/1024) "REDO PER HOUR (MB)", count(*) Archives from v$archived_log where completion_time > sysdate- 1 group by trunc(COMPLETION_TIME,'HH'),thread# order by 1 ;
在此场景中要排除延迟问题,请检查以下内容:
检查网络带宽和复制的单线程性能,确保底层网络可以支持源重做生成速率。有关网络带宽如何影响复制性能的信息,请参见前文中的网络速度和带宽。
检查您是否正确设置了补充日志记录。请避免在源上进行额外的日志记录,例如在表的所有列上启用日志记录。有关设置补充日志记录的信息,请参阅设置补充日志记录。
确认您使用了正确的 API 来读取重做或归档日志。您可以使用 Oracle LogMiner 或 Amazon DMS Binary Reader。当 LogMiner 读取在线重做日志和存档的重做日志文件时,Binary Reader 会直接读取并解析原始重做日志文件。因此,Binary Reader 的性能更高。如果您的重做日志生成速率超过 10 GB/小时,建议您使用 Binary Reader。有关更多信息,请参阅 将 Oracle LogMiner 或 Amazon DMS Binary Reader 用于 CDC。
检查
ArchivedLogsOnly
是否设置为Y
。如果设置了此端点设置,则 Amazon DMS 会从存档重做日志进行读取。这会增加源延迟,因为 Amazon DMS 要等待在线重做日志存档后再读取。有关更多信息,请参阅 ArchivedLogsOnly。如果您的 Oracle 源使用自动存储管理(ASM),有关如何正确配置数据存储的信息,请参阅 使用 Oracle 作为 Amazon DMS 的源时在 Oracle ASM 上存储 REDO。您还可以使用
asmUsePLSQLArray
额外连接属性(ECA)进一步优化读取性能。有关使用asmUsePLSQLArray
的信息,请参阅 使用 Oracle 作为 Amazon DMS 的源时的端点设置。