尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Flink实时同步Oracle到StarRocks的几个踩坑经验分享
最近在搞数据实时同步的活把Oracle的业务数据实时同步到StarRocks给分析用。用的阿里云Flink最新版本 vvr-11.7-jdk11-flink-1.20。选型没什么好说的Flink CDC 读 Oracle写 StarRocks方案很成熟。但阿里云原生不带 Oracle CDC 的 Connector得自己上传开源社区的flink-sql-connector-oracle-cdc-3.0.1上去这个倒还好早有心理准备。结果一上手就是连环坑。先说第一个JDBC 驱动的问题。SQL 写好了建好表点启动直接报错——说无法解析 Oracle 数据库版本找不到 JDBC 驱动。测试环境我们是自建Flink所以版本没问题。我当时想这还不简单传个 ojdbc 上去呗。传了还是报。换了个版本报了另一个错ClassNotFound。再换又来个方法找不到。来来回回试了好几个版本的组合才跑通。阿里云官方也没个明确的依赖推荐列表这东西就是靠试。最后用的ojdbc8-19.3.0.0 版本后面建任务直接复制不想再折腾第二遍。反正就是一句话用阿里云 Flink 跑 Oracle CDC驱动这块一定要提前留出时间来调试别想着一把过。然后第二个问题比较头疼从 Savepoint 恢复任务的时候特别慢。任务跑起来之后同步是没问题的但有次需要重启一下从 Savepoint 恢复等了好几分钟才真正开始跑数据。一开始以为是偶发的没在意后来手动停了再重启还是慢。试了几次都这样那就不是运气问题了。后来排查下来原因是 Savepoint 的状态文件存在 OSS 上恢复的时候要从远程把这些文件拉回来再重建状态引擎。全量快照阶段的状态文件挺大的好几个 G光下载就要好一会儿。解决思路有两个。一个是开 Local RecoveryTaskManager 本地会保留一份状态副本Failover 的时候读本地的不走远程下载速度很快。但这玩意有个坑——它只对 Failover 和动态参数更新有效手动停任务再启动它是不管的还是老老实实走远程。另一个是用 GeminiStateBackend 的懒加载这个对手动重启也管用。原理是状态文件异步下载不用等全加载完作业就能跑起来。代价是刚起来那一阵性能会差一点状态是边用边拉的。不过对于同步任务来说起步慢一点总比卡在那里干等强。最后在部署详情的运行参数配置里加了 Gemini 懒加载的参数恢复时间确实压下来了从好几分钟降到几十秒。这两个方案的适用场景不一样别搞混了。Local Recovery 管意外挂掉的情况Gemini 懒加载管你主动重启的情况。第三个坑比较隐蔽VARCHAR2 的长度映射。Oracle 那边字段类型是VARCHAR2(100)我在 StarRocks 建表的时候直接写了VARCHAR(100)数字一样嘛觉得没问题。跑了一段时间之后发现有些记录写入 StarRocks 报错了提示字段超长。一开始还纳闷100 对 100 怎么就不够了后来想明白了。Oracle 的 VARCHAR2 长度是按字节算的StarRocks 的 VARCHAR 是按字符算的。一个中文字在 UTF-8 下占 3 个字节所以这里面的换算关系不是 1:1。简单粗暴的做法就是映射的时候 StarRocks 那边长度直接乘 3Oracle 的 VARCHAR2(100) 在 StarRocks 建 VARCHAR(300)省得后面一个个去排查。这种事不踩一次还真不知道。第四个坑是最狠的归档日志过期。有天任务突然挂了报错信息里有个offset scn not found大概意思是 CDC 上次记录的那个读取位点对应的 Oracle 归档日志已经被清掉了。去问了下 DBA归档日志只保留了 2 天。偏偏这次任务停了两天多才恢复日志早就没了LogMiner 没法接着读。增量链路断了没别的办法只能清掉 Checkpoint 状态重新跑全量。数据量大全量跑了好久但那会儿也只能等着。事后做了两件事。一是让 DBA 把归档保留策略从 2 天延到了 7 天CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;二是给 CDC 任务加了 SCN 回退参数留点容错空间debezium.log.mining.scn.rewind.distance 50000 debezium.log.mining.scn.rewind.time.ms 300000这个坑的教训就是用 CDC 读 Oracle归档保留时间一定要比任务可能的最长中断时间长不然断了就只能全量重来很痛苦。但还是有个隐患归档保留策略从2天延到了7天会导致服务器磁盘占用很大 后期一定要注意磁盘使用的增量问题否则会导致整个库异常。搞完之后回头看这些问题单个拿出来都不算什么大事但堆在一起确实磨人。尤其是一些细节上的东西像 Local Recovery 只管 Failover 不管手动重启、VARCHAR2 按字节不算字符、归档日志默认只留 2 天这种事不看文档不踩坑根本不会注意。就记这么多吧下次再搞类似的同步任务直接翻这篇省得重复踩坑。
RELATED

相关推荐

Python 实战:把一个“半成品“跳棋改造成单机 / 人机 / 联机三模式完整项目

Python 实战:把一个“半成品“跳棋改造成单机 / 人机 / 联机三模式完整项目

写在前面在学校随便做的中国跳棋课程设计。它能跑,但问题不少:棋盘画得出来,点棋子却经常没反应联机靠手工拼 JSON,还用 eval 解析报文只要有一个玩家断线,整局游戏就卡死没有胜负判定,没有 AI,…

📅 2026/10/29 2:18:48
技术管理者如何评估 EMBA 里的 AI 资源:四维评估框架、课程能力栈拆解与 Python 评分脚本

技术管理者如何评估 EMBA 里的 AI 资源:四维评估框架、课程能力栈拆解与 Python 评分脚本

适合谁读:正在负责 AI 或数字化项目、考虑读在职管理学位的技术管理者。 解决什么问题:几乎每个 EMBA 项目都会提到 AI,怎样把「有 AI」拆成可以逐项核对的指标,并判断这些课程覆盖到 AI 能力栈的哪一层。评估一个项目的 AI 含量时…

📅 2026/10/29 2:13:48
超立方体Ramsey(openai/math 家族181)H11攻坚日志|D114–D117四轮形式化闭合:高度上包络运输、单点擦除、父子包络桥接与Marking余量+1支付

超立方体Ramsey(openai/math 家族181)H11攻坚日志|D114–D117四轮形式化闭合:高度上包络运输、单点擦除、父子包络桥接与Marking余量+1支付

超立方体Ramsey(openai/math 家族181)H11攻坚日志|D114–D117四轮形式化闭合:高度上包络运输、单点擦除、父子包络桥接与Marking余量1支付 专栏标签:Lean4 形式化审计 Ramsey理论 Burr–Erdős猜想 有限概率 尺度递推 …

📅 2026/10/29 2:13:48
MORE NEWS

更多资讯

📰

字母上方加横线怎么打?文档排版中上划线/顶线输入的完整指南

在文档排版这个行当里摸爬滚打十几年,我见过太多人卡在“看起来简单、做起来抓瞎”的小需求上。“在字母上方加一条横线”就是典型中的典型——需求一句话说得清,真到动手的时候,翻遍工具栏也找不到那个按钮。有人想给变量加个平均值符号&…

📰

美团AI开源音频驱动视频生成技术解析

1. 项目概述:音频驱动的AI视频生成技术突破美团AI实验室最新开源的这项技术,彻底改变了传统数字人视频的制作方式。这个名为"无限时长说话视频生成系统"的项目,实现了仅凭一段音频就能自动生成人物口型、头部动作和表情完全同步的高…

📰

实景三维模型单体化技术与工程实践

1. 实景三维模型单体化概述实景三维模型作为数字孪生城市的基础数据载体,在智慧城市、工程测绘、文化遗产保护等领域发挥着越来越重要的作用。但原始采集的实景模型往往是一个连续的整体网格,缺乏语义信息和结构化组织。这就好比我们拿到了一整块未经切割…

📰

若依前后端分离部署常见问题排查指南

简介:本资源是一份面向Java全栈开发者与运维人员的若依(RuoYi)前后端分离项目实战部署指南,聚焦LinuxNginx与WindowsTomcat双环境落地难点,系统解决部署后404页面、跨域调用第三方API(如百度地图&#xff0…

📰

AI Agent工具市场现状与生产环境部署指南

1. AI Agent工具市场现状与核心痛点过去一年里,AI Agent开发框架和工具呈现爆发式增长。根据GitHub趋势统计,仅2023年就有超过200个新的AI Agent相关项目开源,平均每周出现4-5个新工具。这种繁荣背后反映的是大模型技术普及后,市场…

📰

运筹学期末复习指南:建模、对偶与网络计划核心考点串讲

简介:这份运筹学期末练习试卷面向高校运筹学课程学习者与备考学生,用于系统检验建模、概念理解与计算求解能力。试卷涵盖线性规划与整数规划建模、定性分析与定量分析等名词解释、活动网络图关键路径分析,以及资源分配、决策树和表上作业法求…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬