Flink CDC支持Oracle RAC架构CDB+PDB模式的实时数据同步吗,可以上生产环境吗

众所周知,Flink CDC是一个流数据集成工具,支持多种数据源的实时数据同步,包括大家所熟知的MySQL,MongoDB等。原本是作为Flink的子项目运行,后来捐献给Apache基金会,底层实现比较依赖于Flink生态。具体到数据同步底层实现则相对比较依赖于Debezium。

对于Oracle实时数据同步有需求的用户来说,经常会有疑问,比如Flink CDC支持Oracle实时数据同步吗,可以应用到生产环境吗?这些问题也经常且反复的在Flink CDC社区群被来自各个不同行业的用户所咨询。

本文将以实际的实践经验解答这些问题,"避免入坑"。但同时也提供Oracle端的完整配置供读者朋友们测试使用,欢迎留言区探讨~

  1. Flink CDC支持Oracle实时数据同步吗?

支持,但有限。

Flink CDC在Oracle实时数据同步的实现上依赖于Debezium,目前依赖的版本是1.9.8.Final(比较老的版本,现在Debezium最新版本已经3.x了)。Debezium底层对Oracle的支持有2种模式,Logminer(默认模式)和Xstream。Flink CDC官方对Oracle的默认支持模式也是Logminer,也是用的比较多的一种。

Logminer是Oracle推出的一个开源工具,原本初衷是帮助DBA来排查数据库问题的,现在很多非Oracle官方推出的基于日志解析的Oracle CDC实时同步工具基本都是基于Logminer做的封装,存在各种问题。比如同步效率很低,尤其是当存量数据非常大的时候,开启initial模式(全量/存量+增量),仅同步存量数据都会消耗很多时间,甚至有时候会出现snapshot too old错误导致同步任务挂掉,只能重新同步。并且目前只支持Oracle主库同步。

  1. 可以在生产环境中应用Flink CDC来完成Oracle的实时数据同步吗?

强烈不建议、强烈不建议、强烈不建议,重要的事情说三遍!!!

Oracle作为一个闭源工具,官方推出了一个商业化产品来完成对Oracle实时数据同步的支持,叫Oracle Golden Gate,简称OGG。这是对Oracle实时数据同步实现首推工具,同步效率、稳定性、健壮性都远远高于各种基于Logminer做二次封装的工具。即使是Flink CDC社区维护人员,在Oracle实时数据同步的工具上,也是首推OGG,不建议使用Flink CDC更不建议上生产。有兴趣的读者可以在Flink CDC社区钉钉群搜索关键字Oracle查看社区用户的讨论。

可能到了这里,仍然有一部分用户想说,我就是想用Flink CDC来解决Oracle实时数据同步的问题,毕竟是免费的,OGG那么贵,用不起。

那么接下来作为在Flink CDC Oracle踩过坑的用户之一,分享下Flink CDC对Oracle RAC架构CDB+PDB模式的实时数据同步之Oracle端怎么配置。(PS: Flink CDC官方在Oracle Connector CDC文档的配置中存在诸多问题,且对于Oracle 19c,CDB + PDB不支持Incremental Snapshot模式)

1. 依赖的版本和部署模式:

  • Flink 1.18
  • Flink CDC 3.2.1/2.4.2(PS: Flink CDC
    3.X版本及之后对Oracle的支持几乎没有迭代更新)
  • Debezium 1.9.8.Final
  • Oracle 19c, RAC/单机,CDB + PDB模式

2. 创建Oracle用户和赋权

复制代码
1. 创建一个COMMON用户
CREATE USER "PPC#FLINKCDCAPP"
IDENTIFIED BY "******"
DEFAULT TABLESPACE ZHGC
TEMPORARY TABLESPACE TEMP_ZHGC
CONTAINER=ALL;

2. 用户PPC#FLINKCDCAPP赋权
GRANT CREATE SESSION TO PPC#FLINKCDCAPP CONTAINER=ALL;
GRANT SET CONTAINER TO PPC#FLINKCDCAPP CONTAINER=ALL;
GRANT FLASHBACK ANY TABLE TO PPC#FLINKCDCAPP CONTAINER=ALL;
GRANT SELECT ANY TABLE TO PPC#FLINKCDCAPP CONTAINER=ALL;
GRANT SELECT_CATALOG_ROLE TO PPC#FLINKCDCAPP CONTAINER=ALL;
GRANT EXECUTE_CATALOG_ROLE TO PPC#FLINKCDCAPP CONTAINER=ALL;
GRANT SELECT ANY TRANSACTION TO PPC#FLINKCDCAPP CONTAINER=ALL;
GRANT LOGMINING TO PPC#FLINKCDCAPP CONTAINER=ALL;
GRANT ANALYZE ANY TO PPC#FLINKCDCAPP CONTAINER=ALL;
GRANT CREATE TABLE TO PPC#FLINKCDCAPP CONTAINER=ALL;
GRANT LOCK ANY TABLE TO PPC#FLINKCDCAPP CONTAINER=ALL;
GRANT ALTER ANY TABLE TO PPC#FLINKCDCAPP CONTAINER=ALL;
GRANT CREATE SEQUENCE TO PPC#FLINKCDCAPP CONTAINER=ALL;
GRANT EXECUTE ON DBMS_LOGMNR TO PPC#FLINKCDCAPP CONTAINER=ALL;
GRANT EXECUTE ON DBMS_LOGMNR_D TO PPC#FLINKCDCAPP CONTAINER=ALL;
GRANT SELECT ON V_$DATABASE TO PPC#FLINKCDCAPP CONTAINER=ALL;
GRANT SELECT ON V_$LOG TO PPC#FLINKCDCAPP CONTAINER=ALL;
GRANT SELECT ON V_$LOG_HISTORY TO PPC#FLINKCDCAPP CONTAINER=ALL; 
GRANT SELECT ON V_$LOGMNR_LOGS TO PPC#FLINKCDCAPP CONTAINER=ALL;
GRANT SELECT ON V_$LOGMNR_CONTENTS TO PPC#FLINKCDCAPP CONTAINER=ALL;
GRANT SELECT ON V_$LOGMNR_PARAMETERS TO PPC#FLINKCDCAPP CONTAINER=ALL;
GRANT SELECT ON V_$LOGFILE TO PPC#FLINKCDCAPP CONTAINER=ALL;
GRANT SELECT ON V_$ARCHIVED_LOG TO PPC#FLINKCDCAPP CONTAINER=ALL;
GRANT SELECT ON V_$ARCHIVE_DEST_STATUS TO PPC#FLINKCDCAPP CONTAINER=ALL;
GRANT SELECT ON V_$TRANSACTION TO PPC#FLINKCDCAPP CONTAINER=ALL;
GRANT SELECT ON GV_$TRANSACTION TO PPC#FLINKCDCAPP CONTAINER=ALL;
GRANT SELECT ON SYS.LOGMINER_DICT_CACHE TO PPC#FLINKCDCAPP CONTAINER=ALL;

阅读原文获取更多信息

https://mp.weixin.qq.com/s/GSbsBLS8aOXWqNsq6hny7g

相关推荐
zandy10118 小时前
2025企业级智能体平台架构拆解: 如何安全合规下构筑强大的护城河
大数据·安全·架构·智能体
TDengine (老段)9 小时前
从“事后抢险”到“事前防控”:江西水投用 TDengine 时序数据库重塑防汛模式
大数据·数据库·物联网·时序数据库·tdengine·涛思数据·1024程序员节
yy76349666811 小时前
WPF 之 简单高效的Revit多语言支持方案
java·大数据·linux·服务器·wpf
渲吧云渲染14 小时前
SaaS模式重构工业软件竞争规则,助力中小企业快速实现数字化转型
大数据·人工智能·sass
青云交15 小时前
Java 大视界 -- 基于 Java 的大数据机器学习模型在图像识别中的迁移学习与模型优化
java·大数据·迁移学习·图像识别·模型优化·deeplearning4j·机器学习模型
last_zhiyin16 小时前
Oracle sql tuning guide 翻译 Part 6-4 --- Hint使用准则和Hint使用报告
数据库·sql·oracle·sql tunning
wending-Y17 小时前
如何正确理解flink 消费kafka时的watermark
flink·kafka·linq
auspicious航19 小时前
PostgreSQL数据库关于pg_rewind的认识
数据库·postgresql·oracle
java_logo1 天前
Docker 部署 Elasticsearch 全流程手册
大数据·运维·mongodb·elasticsearch·docker·容器
墨香幽梦客1 天前
掌控制造脉络:电子元器件行业常用ERP系统概览与参考指南
大数据·人工智能