Oracle BLOB 同步准备
本文介绍 CloudCanal 同步 Oracle BLOB 字段前需要开启的配置,以及开启 BLOB 同步后对任务性能的影响。
适用场景
当 Oracle 源端表中包含 BLOB 字段,并且 需要在增量同步中同步该字段内容时,需要开启本文中的配置。
Oracle BLOB 在 LogMiner 中通常不会表现为一条完整的普通 UPDATE,而是会拆分为定位目标行、定位目标列、分片写入等多个日志事件。CloudCanal 需要识别这些事件,并在事务提交后将多个 BLOB 片段还原为最终字段值,再写入目标端。
如果任务不需要同步 Oracle BLOB 字段,不建议开启 BLOB 同步配置。
前置条件
- 已完成 Oracle LogMiner 同步准备,包含归档日志、补全日志、账号权限等配置。参考 Oracle LogMiner 同步准备。
- 源端表的 BLOB 字段已包含在任务映射范围内。
- 任务运行节点有足够的本地磁盘空间和磁盘 I/O 能力,用于承载 BLOB 片段组装过程中的临时文件。
开启 BLOB 同步配置
Oracle BLOB 增量同步需要同时开启任务核心参数和源数据源参数。
| 参数位置 | 参 数名 | 配置值 | 说明 |
|---|---|---|---|
| 任务核心配置 | useTypedField | true | 开启类型化字段传递能力。BLOB 组装后的文件引用会通过类型化字段在链路中传递。 |
| 源数据源配置 | oraLmLobEnable | true | 开启 Oracle LogMiner BLOB 事件解析能力,使 CloudCanal 识别 BLOB 定位和写入事件。 |
操作步骤
- 进入任务详情页。
- 点击右上角 功能列表 > 修改参数。
- 在 任务核心配置 中,将
useTypedField修改为true。 - 在 源数据源配置 中,将
oraLmLobEnable修改为true。 - 点击页面右上角 生效配置,确认变更。
- 如果页面提示需要重启任务,请按提示重启任务或等待系统自动重启后生效。
建议在任务首次运行前完成上述配置。如果是在已有任务上开启 BLOB 同步,请确认任务重启后再继续增量同步。
同步性能影响
开启 Oracle BLOB 同步后,CloudCanal 会额外处理 BLOB 相关日志事件,并在本地进行片段组装。相比只同步普通字段,任务性能可能受到以下影响。
源端日志解析开销增加
开启 oraLmLobEnable=true 后,CloudCanal 会从 LogMiner 结果中识别 BLOB 定位、写入等事件,并解析每个 BLOB 写入片段。
如果源端存在大量 BLOB 更新,LogMiner 返回的事件数量会增加,任务在日志拉取、SQL 解析和事件转换上的 CPU 开销也会增加。
长事务场景延迟可能增加
BLOB 写入依赖事务上下文。为了避免长事务跨 LogMiner 窗口时丢失 BLOB 定位信息或回滚信息,CloudCanal 会在 BLOB 同步场景下保留必要的事务窗口。
如果源端存在长时间未提交的大事务,增量解析可能需要回看更早的 SCN 区间,导致部分日志被重复扫描,任务延迟可能上升。