从 Oracle 到 Doris,如何搭建稳定持续的数据同步链路
在实时数仓与报表场景中,Apache Doris 凭借高性能的 OLAP 能力,越来越多地被用作 Oracle 业务数据的分析引擎。如何把 Oracle 中的存量与增量数据稳定、持续地同步到 Doris?本文基于 NineData 数据复制功能的真实录屏演示,手把手带你完成从创建复制任务、选择复制对象、配置映射、预检查,到启动后查看结构复制、全量复制、增量复制,以及验证增量变更与 DDL 同步结果的全过程,并整理了 Oracle 到 Doris 的前置条件、数据类型映射与常见问题,照着做即可完成一次完整的 Oracle 到 Doris 数据迁移同步。

一、NineData Oracle 到 Doris 数据复制能力概览
NineData 数据复制支持 Oracle 到 Doris 之间的全量数据同步和增量数据同步,可按需组合三种复制类型:
• 结构复制:将 Oracle 的库表结构转换为 Doris 建表语句并在目标端执行,不同步数据;
• 全量复制:同步源数据源的所有对象与存量数据,完成全量数据初始化;
• 增量复制:全量完成后基于 Oracle 重做日志(通过 LogMiner 解析)持续同步增量变更,支持按操作类型(INSERT/UPDATE/DELETE/DDL 等)过滤。
NineData 会按源表的主键、唯一键情况自动为 Doris 选择合适的表模型(Unique / Duplicate)并定义 Key 与分桶键,无需手工编写建表与映射代码。
二、前提条件与使用限制
前提条件
• 已将源数据源(Oracle)和目标数据源(Doris)添加至 NineData;支持的 Oracle 版本包括 11g、12c、18c、19c、21c、23ai;
• 源端 Oracle 必须处于 ARCHIVELOG(归档日志)模式,并开启补充日志(Supplemental Logging),典型配置为执行 ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;,以便 LogMiner 解析到完整的行前/行后镜像;
• 源端账号需具备日志与字典访问权限,例如 CONNECT(CREATE SESSION)、SELECT ANY DICTIONARY、SELECT ANY TABLE、SELECT_CATALOG_ROLE,以及增量所需的 SELECT ANY TRANSACTION 与 LogMiner 相关权限(生产环境通常授予 DBA 角色以满足增量解析);
• 目标端 Doris 账号需具备建库建表与写入(DML/DDL)权限。
使用限制
• 源端库表名称需符合 Doris 命名规则:以字母开头,可包含字母、数字和下划线,不能包含空格或其他特殊字符;
• 仅复制用户数据库,Oracle 的 SYS、SYSTEM 等系统 schema 不会被复制;
• 为保障增量一致性,建议同步表尽量具备主键或唯一约束;
• 全量初始化会占用源端与目标端一定的读写资源,建议在业务低峰期执行,并提前评估两端数据库性能;
• 增量阶段可查看各类型事件计数与 DDL 回放详情,确认结构变更已在目标端按相同语义完成。
三、创建 Oracle 到 Doris 的数据复制任务(5 步)
步骤 1:配置数据源与目标
登录 NineData 控制台,在左侧导航栏单击数据复制 > 数据复制,单击右上角创建复制。在数据源与目标页签:填写便于识别的任务名称(最多 64 个字符);源数据源选择已接入的 Oracle 实例,目标数据源选择 Doris 数据源;复制类型建议同时勾选结构复制、全量复制和增量复制,覆盖完整迁移流程;如目标端可能存在同名表或存量数据,可展开目标表准备配置,按需选择预检查报错并停止任务、跳过并继续任务、删除对象并重建或保留结构并清空数据再覆盖写入等策略(删除重建或清空数据前,务必确认目标数据可以处理)。确认无误后单击下一步。

步骤 2:选择复制对象
在选择复制对象页签,可以选择全部实例复制源库所有内容,也可以选择自定义对象,在源对象列表中勾选需要同步的库和表,单击添加加入右侧目标对象列表,仔细核对迁移范围。

步骤 3:配置映射(目标库表、主键与分桶键)
在配置映射页签,源表与目标表默认一一对应。打开映射与过滤,可确认字段级映射、主键与分桶键(Bucket Key)的设置——NineData 会依据源表键定义自动为 Doris 选择合适表模型并推导 Key。如需调整列名或增加数据过滤条件(例如只同步满足条件的记录),也可在此配置。核对目标库名、目标表名以及 Key 定义无误后,单击保存并预检查。

步骤 4:预检查
预检查会自动核对连接、命名规则、权限和对象等条件,重点包括:源库日志归档模式检查、源库附加日志检查、目标库同名对象存在性检查、源/目标数据源连接检查、源/目标库权限检查等。预检查未通过时,单击检查项右侧操作列的详情,查看失败或警告的具体原因;本次演示中目标库同名对象存在性检查未通过,确认不影响业务后选择跳过。其余检查项全部通过后,单击启动任务。

步骤 5:启动任务
预检查通过后,在启动任务页面确认运行配置并单击启动任务,提示启动成功后同步任务即开始运行。此时可单击查看详情进入任务详情页查看各复制阶段的执行情况,或单击返回列表回到数据复制任务列表。

四、查看同步结果:结构、全量、增量复制与 DDL 变更同步
结构复制
在结构复制页签查看目标对象的创建结果,列表展示源/目标库、源/目标对象、开始与结束时间及状态;结构复制将 Oracle 表结构转换为 Doris 建表语句并在目标端执行,对象状态很快变为已完成。必要时可单击操作列的查看 DDL 进行 SQL 回放,或单击右上角日志查看执行日志。

全量复制
切换到全量复制页签,检查表级状态、完成进度和数据量;全量复制将存量数据全部写入目标端,过程中可单击监控查看各项监控指标,并通过限流设置限制每秒写入目标端的速率(行/秒);遇到失败对象,根据错误信息排查修复后继续处理。全量复制完成后,顶部状态自动进入增量复制阶段。

增量复制
全量结束后,增量复制持续同步 Oracle 的增删改变更与 DDL。在增量复制页签可查看读取延迟、复制延迟与吞吐量监控曲线,复制延迟稳定为零秒,链路运行稳定;也可查看各类型事件(INSERT/DELETE/UPDATE/DDL)的统计。延迟异常时,结合日志与两端资源情况排查,并可通过限流设置调整写入速率。

增量变更与 DDL 同步结果
源端产生增量变更后,任务状态恢复为运行中,复制延迟稳定为零秒。增量复制页签实时展示操作计数,INSERT、DELETE、UPDATE 与 DDL 变更均已同步,链路运行稳定。

单击 DDL 计数或详情页的查看 DDL,可以打开增量复制 DDL 详情,查看每条 DDL 的回放详情:源端执行的加列语句(Alter Table),已在目标端 Doris 按相同语义完成,两端结构保持一致。

增量数据与结构变更全部追平后,读取延迟与复制延迟图表回归平稳,同步链路保持稳定运行;后续源端的任何变更都会持续实时同步到目标端。

五、常见问题(FAQ)
Q1:Oracle 同步到 Doris 支持哪些复制类型?
支持结构复制、全量复制和增量复制三种类型,可单独或组合使用。生产迁移建议同时勾选三种:结构复制完成建表,全量复制完成存量初始化,增量复制基于 Oracle 重做日志持续同步变更,实现平滑迁移。
Q2:源端 Oracle 需要做哪些日志配置?
必须开启 ARCHIVELOG 归档日志,并开启补充日志(如 ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;),否则 LogMiner 无法解析到完整的行镜像,增量同步会缺失数据。
Q3:源端账号需要哪些权限?
需要 CONNECT(CREATE SESSION)、SELECT ANY DICTIONARY、SELECT ANY TABLE、SELECT_CATALOG_ROLE 等字典与表读取权限;增量复制还需要 SELECT ANY TRANSACTION 与 LogMiner 相关权限,生产环境通常直接授予 DBA 角色。
Q4:目标端存在同名表或存量数据怎么办?
在数据源与目标页签展开目标表准备配置进行选择:可选预检查报错并停止任务、跳过并继续任务、删除对象并重建,或保留结构并清空数据再覆盖写入。执行删除重建或清空前,务必确认目标数据可以处理,避免误删。
Q5:预检查失败如何处理?
在预检查页签单击失败项右侧的详情,查看具体原因(常见如归档模式未开启、补充日志不足、权限不够、库名表名不符合 Doris 命名规范等),手动修复后单击重新检查,直至全部通过;警告项可视情况修复或忽略。
Q6:增量延迟为 0 秒意味着什么?
在复制详情页顶部与增量复制页签均可查看同步延迟。延迟为 0 秒表示源端与目标端数据已完全一致,此时可以将业务切换到目标 Doris,实现平滑迁移。
结语
通过以上步骤,我们使用 NineData 完成了 Oracle 到 Doris 的结构、全量和增量复制配置,并验证了对增删改与 DDL 变更的实时同步能力。相比手工导出导入,NineData 将建表映射、模型转换、增量同步与一致性校验整合在一条可视化链路中,大幅降低 Oracle 到 Doris 迁移的门槛与风险。如果你正在规划 Oracle 到 Doris 的数据迁移,不妨按本文步骤实际操作一遍。
- 点赞
- 收藏
- 关注作者
评论(0)