flink cdc oracle跑起来以后,如果一段时间oracle表没有数据更新,连接就中断了。报错为: no more data to read from socket, job就挂了。有没有什么参数维持这个连接不中断呢
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
问题描述: 用户在使用Flink CDC连接Oracle时,遇到当Oracle表在一段时间内没有数据更新后,Flink作业会因连接中断而失败,报错信息为"no more data to read from socket",导致作业停止运行。用户希望了解是否有参数可以设置以维持此连接不中断。
背景信息:
解决方案:
步骤1:增加心跳机制配置。虽然直接针对Oracle CDC Source的心跳配置未在参考资料中明确指出,但通常可以通过通用的网络连接保持策略来解决这类问题。在Flink作业配置中,可以尝试增加网络连接的保活参数,例如'debezium.connect.keep.alive.interval.ms' = '40000'
。这个参数会定期发送心跳包以维持TCP连接的活跃状态,防止因长时间无数据传输而被数据库服务器断开。
步骤2:检查并调整Oracle数据库端的网络连接超时设置。如果可能,与数据库管理员协作,适当增大Oracle数据库的网络连接空闲超时时间(如SQLNET.INBOUND_CONNECT_TIMEOUT
或相关的网络配置),以适应作业运行的需求。
注意事项:
示例代码(仅展示如何在Flink作业配置中添加心跳配置):
# 在Flink作业的配置文件或命令行参数中添加以下配置
'debezium.connect.keep.alive.interval.ms' = '40000'
总结: 通过在Flink作业配置中增加心跳间隔参数以及考虑调整Oracle数据库的网络超时设置,可以有效避免因数据传输空闲导致的连接中断问题,从而确保Flink CDC作业的稳定运行。
请注意,实际应用中可能还需根据具体情况调整和优化这些配置。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。