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

请教个问题?flinkcdc怎么支持Oracle19c数据采集?

请教个问题?flinkcdc怎么支持Oracle19c数据采集? Caused by: java.sql.SQLException: ORA-44609: CONTINOUS_MINE is desupported for use with DBMS_LOGMNR.START_LOGMNR. ORA-06512: at "SYS.DBMS_LOGMNR", line 72 ORA-06512: at line 1 12c以后不支持这种方式了,请问还有其它实现方式吗?

展开
收起
十一0204 2023-04-11 09:18:12 435 0
2 条回答
写回答
取消 提交回答
  • 值得去的地方都没有捷径

    您好,针对您提到的问题,我了解到 Oracle 19c 开始不再支持 CONTINUOUS_MINE 方式进行数据采集,需要使用新的方式进行采集。

    一种可行的替代方式是使用基于 Oracle GoldenGate 的数据采集。Oracle GoldenGate 支持 Oracle 19c,可以实现实时数据复制和数据同步。您可以将 Flink CDC 与 Oracle GoldenGate 集成,来实现对 Oracle 19c 数据库的数据采集。

    具体步骤可以参考以下链接:

    https://ci.apache.org/projects/flink/flink-docs-release-1.13/docs/connectors/datastream/goldengate/ https://docs.oracle.com/en/middleware/goldengate/core/19.1/administration/index.html 希望对您有所帮助。

    2023-04-17 17:10:47
    赞同 展开评论 打赏
  • 坚持这件事孤独又漫长。

    Oracle 19c不再支持使用DBMS_LOGMNR.START_LOGMNR函数来启用日志挖掘。此函数已被DBMS_LOGMNR_D.SET_LOGMNR_PROPERTY替换,该函数可以在19c及更高版本中使用。

    • 要使用Flink CDC连接Oracle 19c的话,需要使用支持使用DBMS_LOGMNR_D.SET_LOGMNR_PROPERTY函数的Flink版本。在Flink 1.14或更高版本中,支持使用DBMS_LOGMNR_D.SET_LOGMNR_PROPERTY函数作为使用Oracle CDC的一种新方式。你需要在连接属性中设置“table-name-case-sensitive=false”属性来避免表名大小写问题。以下是一些示例代码:
    TableSource<?> cdcSource = new MySqlBinlogSource(...)
        .setDatabaseHostname("localhost")
        .setDatabasePort(3306)
        .setDatabaseUsername("flinkuser")
        .setDatabasePassword("flinkpw")
        .setDatabaseName("inventory")
        .setTableList("inventory.products");
    
    DataStreamSource<?> stream = env.addSource(cdcSource);
    

    在这里,以MySQL二进制日志作为示例,你可以使用MySqlBinlogSource来替换成对应的Oracle CDC的数据源。如果你使用的是Flink 1.13或更早版本,则需要使用不同的实现方式来连接Oracle 19c数据库进行CDC数据采集。

    2023-04-11 10:55:49
    赞同 展开评论 打赏

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

相关电子书

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

相关镜像