开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

大佬, oracle-cdc有个在fetch数据的时候报错, 之前建立的连接不释放的问题, 如果任?

大佬, oracle-cdc有个在fetch数据的时候报错, 之前建立的连接不释放的问题, 如果任务一直重试,拉起. 也会造成连接数爆满,image.png
image.png
是因为感知到了ddl, 红框部分的默认值是true, 触发了后面mysql binlog的获取(不知道为什么oracle里面会有这部分)就会报这个file is not a valid field name , 可以通过设置 debezium.include.schema.changes=false的方式 跳过该方法

展开
收起
真的很搞笑 2023-07-13 15:20:13 90 0
3 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    如果 Oracle CDC 在 fetch 数据的时候报错,并且之前建立的连接没有释放,可能是由于连接池设置不正确,或者代码中没有正确地释放连接。你可以通过以下方法来解决这个问题:

    检查连接池设置:连接池是用来管理数据库连接的工具,可以帮助你复用连接、提高性能、减少资源占用。如果连接池设置不正确,可能会导致连接无法释放,从而影响程序的运行和性能。你需要检查连接池的配置文件或代码,确保连接池的最大连接数、最小连接数和连接超时时间等参数设置正确。

    检查代码中的连接释放:在使用 Oracle CDC 抽取数据时,你需要手动创建连接并执行查询操作,然后手动释放连接。如果代码中没有正确地释放连接,可能会导致连接无法复用,从而影响程序的运行和性能。你需要在代码中添加连接释放的语句,确保连接能够正确地释放。

    使用连接池管理连接:连接池可以帮助你自动管理连接的创建和释放,可以有效地降低连接泄漏和资源浪费的风险。你可以使用连接池来管理连接,而不是手动创建和释放连接。在使用连接池时,你需要确保连接池的设置正确,并且能够正确地管理连接的创建和释放。

    2023-07-29 21:38:38
    赞同 展开评论 打赏
  • 在使用 Oracle CDC(Change Data Capture)时遇到连接不释放的问题,可能会导致连接数过多,进而导致连接池耗尽。

    解决这个问题的常见方式是通过配置连接池的最大连接数和空闲连接超时时间来控制连接的释放。可以根据具体的情况进行如下设置:

    1. 最大连接数:设置连接池的最大连接数,确保不会因为连接数过多而导致连接池耗尽。您可以根据系统的并发需求和硬件资源来设置适当的最大连接数。例如,在 Flink 中使用 Apache Commons DBCP 连接池时,可以通过 maxTotal 属性设置最大连接数。

    2. 空闲连接超时时间:设置连接池中空闲连接的超时时间。当连接空闲一段时间后,如果没有被使用,就会被自动释放。这样可以避免长时间占用连接资源。例如,在 Flink 中使用 Apache Commons DBCP 连接池时,可以通过 minEvictableIdleTimeMillis 属性设置空闲连接的超时时间。

    另外,还可以检查代码中是否存在未正确关闭连接的情况。在每次使用完连接后,应该及时调用 close() 方法将连接归还给连接池。

    需要注意的是,如果任务一直重试且频繁地拉起,可能会导致连接数持续增加,最终耗尽连接池的资源。在这种情况下,除了上述的连接池配置和连接释放的优化,还可以考虑调整任务重试策略,避免频繁拉起任务。

    2023-07-29 19:28:13
    赞同 展开评论 打赏
  • 已经修复,自行编译2.4分支。,此回答整理自钉群“Flink CDC 社区”

    2023-07-13 16:24:04
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关电子书

更多
PostgresChina2018_樊文凯_ORACLE数据库和应用异构迁移最佳实践 立即下载
PostgresChina2018_王帅_从Oracle到PostgreSQL的数据迁移 立即下载
Oracle云上最佳实践 立即下载

相关镜像