Flink CDC里 oracle-cdc使用initial模式只获取到1条数据,可能是什么原因?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在使用Flink CDC的oracle-cdc
连接器时,如果以initial
模式启动作业却只获取到1条数据,可能是由以下原因导致的:
initial
模式会扫描表中的全量数据。如果目标表中仅存在1条记录,则CDC作业只会读取到这1条数据。SELECT
权限或对某些系统视图的访问权限。SELECT
权限:能够读取目标表的所有数据。ALL_TAB_COLUMNS
、ALL_OBJECTS
等)。GRANT SELECT ON <your_table> TO <your_user>;
table-name
正则表达式或scan.startup.mode
参数),可能导致只有部分数据被读取。table-name
参数是否正确匹配目标表。WHERE
子句)限制了数据范围。-- 检查归档日志模式
SELECT log_mode FROM v$database;
-- 如果未启用归档日志模式,启用命令如下:
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
flink-sql-connector-oracle-cdc-2.x.x.jar
)。WITH
参数配置是否正确,特别是scan.startup.mode
和debezium.*
相关参数。'scan.startup.mode' = 'initial',
'debezium.snapshot.mode' = 'initial'
debezium.snapshot.mode
参数设置为never
或其他非默认值,可能导致CDC连接器跳过了全量数据的读取。debezium.snapshot.mode
参数设置为initial
,以保证全量数据的读取。'debezium.snapshot.mode' = 'initial'
currentEmitEventTimeLag
)确认作业是否已进入增量阶段。通过以上分析,建议按照以下步骤逐步排查问题: 1. 检查目标表的数据量是否充足。 2. 确认Oracle用户的权限配置是否正确。 3. 验证table-name
和scan.startup.mode
等参数配置是否符合预期。 4. 检查Oracle数据库的Redo Log配置是否满足CDC要求。 5. 确保使用的是稳定版本的Flink CDC连接器,并正确配置相关参数。
如果问题仍未解决,请提供更详细的日志信息以便进一步分析。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。