适用对象:DBA、数据工程师、架构师
目标:以最小源负载把 Oracle 的增量变化稳定送达 Doris,用于实时明细与近实时聚合。
成功标准(上线前对齐)
端到端延迟与稳定窗口(如“分钟级”)
一致性目标(事务顺序保真、关键表差异率阈值)
回退策略(初始化重复执行/增量回放的可行路径)
1. 前置检查(Oracle & Doris)
Oracle
ARCHIVELOG 已开启,日志保留满足回放窗口。
建议启用 Supplemental Logging(至少主键/关键列),便于下游合并。
具备读取 redo/归档日志的必要权限(如 LogMiner/等价能力)。
网络连通性与带宽可达预期。
Doris
规划数据库/表/分区(日期/业务键),选定 Unique Key / Primary Key 或明细模型。
确定写入方式:
Stream Load(直写,简洁)
Routine Load(经消息中间件)(解耦与扩展性更好)
预置目标表结构及索引/分桶策略,准备数据类型映射。
Oracle(CDC)→(可选 Kafka)→ Doris(Stream/Routine Load)
2. 连接配置(源与目标)
源:Oracle CDC
连接:Host/Port/SID or ServiceName,字符集确认。
采集:选择 日志解析 CDC;限定库/表白名单;设置位点(SCN)策略。
初始:启用 Online Snapshot;速率/并发节流,避开业务高峰。
过滤/映射:忽略无关表、历史大表按条件快照;保留事务顺序与主键。
目标:Doris
方式一(Stream Load):FE 地址、鉴权、批量大小、重试/幂等键。
方式二(Routine Load):Topic/订阅、并发分配、批量/超时、失败重试。
合并语义:建议使用 Unique/Primary Key 表实现 upsert;如为明细模型,需在上游完成去重或携带序列列实现“最后写入生效”。
3. 初始装载(全量)
1. 建表/类型映射(示例):
NUMBER(p,s) → DECIMAL(p,s) 或 BIGINT(按实际范围)
DATE/TIMESTAMP → DATETIME
VARCHAR2/NVARCHAR2 → STRING
CLOB → STRING(必要时分流对象存储)
BLOB → 外挂存储或编码后入库
2. 一致性快照:以 SCN/时间点为基准提取全量,记录快照 SCN。
3. 装载策略:分表/分区并行,限速,失败重试。
4. 快照校验:关键表行数/聚合指标抽样比对。
4. 增量切换(CDC 上线)
1. 增量起点:以快照时记录的 SCN 为起点读取日志,确保“不重不漏”。
2. 顺序与幂等:按主键/分片键维持顺序;下游以主键/版本列实现幂等 upsert。
3. 节流与背压:遇下游压力,按链路/表/域分流限速,优先保障关键表。
4. 灰度:短窗口“双写比对”→达到一致性阈值→收敛旧链路。
5. Schema 变更(演进)
新增列:Doris 先 ALTER TABLE ADD COLUMN,默认值/NULL 兼容,增量携带新列后自动就绪。
重命名/类型变更:建立映射/别名层,过渡双写;必要时做字段级转换并标注失败兜底。
主键调整:采用影子键过渡,回填完成后切换实际主键。
最佳实践:在 CDC 平台内开启“模式公告”,以事件通知 IVM/OLAP/应用方。
6. 对账与监控
指标:窗口延迟、位点落后、错误率、重放次数、批量拒绝数。
对账:
快照后首次对账:核心表行数/关键聚合;
滚动抽样:按主键随机抽样比对字段;
切换窗口:双写一致性阈值达标后收敛。
告警:阈值触发(延迟/落后/差异率),联动回放或节流策略。
借助 TapData:快、更稳、可复用
省心的日志解析 CDC:低源负载、保留事务顺序与位点,可追平/回放,避免对线上写入与查询的干扰。
初始化 + 增量自动衔接:快照与 SCN 对齐,自动完成断点续传与多下游独立位点管理。
直连 Doris 的适配:内置 Stream Load / Routine Load 接入与参数控制,支持 Unique/Primary Key upsert 与批量/并发调优。
演进与对账内建:新增/重命名/类型变更的向后兼容策略,暴露窗口延迟、位点落后、差异率等可观测指标。
安全与跨网:最小权限、字段级脱敏与访问审计,支持跨网传输与分区部署策略。
FAQ
Q1:必须开启 Supplemental Logging 吗?
A:强烈建议。缺少关键列会影响下游 upsert 与对账。
Q2:全量与增量如何对齐?
A:以快照 SCN 为界;增量从该 SCN 开始消费,避免重复与缺失。
Q3:Doris 用什么表模型?
A:实时 upsert 场景优先 Unique/Primary Key;需要累加/汇总可用聚合模型或在 IVM/下游实现。
Q4:BLOB/CLOB 如何处理?
A:按业务需求选择外部存储或转码;大对象尽量不走高频增量链路。
Q5:跨网如何传输?
A:按安全策略加密传输,必要时经消息中间件或边缘节点汇聚后入库。