开发者社区 > 大数据与机器学习 > 正文

新手入门想问一下大佬们Flink CDC中 oracle19C flinkCdc2.3.0版本,?

新手入门想问一下大佬们Flink CDC中 oracle19C flinkCdc2.3.0版本,使用DataStream Source,非CDB数据库 表和数据库都必须开补充日志吗? 数据库开了补充日志时报错表要开补充日志,给表开过之后,又报无效的列类型,该如何解决?

展开
收起
真的很搞笑 2023-05-22 19:06:29 186 0
8 条回答
写回答
取消 提交回答
  • 对于Flink CDC中的Oracle 19C和Flink CDC 2.3.0版本,使用DataStream Source时,如果数据库和表都没有开启补充日志,是无法正常工作的。补充日志是Oracle数据库中用于记录变更数据的一种机制,而Flink CDC正是通过读取补充日志来捕获变更数据的。

    如果在开启补充日志时遇到了报错表要开启补充日志的问题,可能是因为在开启补充日志之前,并没有为表设置恰当的列类型。请确保在为表开启补充日志之前,表的列类型已经正确设置。如果报错中提到的是无效的列类型,可能是由于表的某些列的数据类型不被支持导致的。

    要解决这个问题,你可以检查表的列类型是否符合Flink CDC的要求。确保表的列类型在Flink CDC所支持的范围内。如果有不支持的数据类型,你可能需要进行数据类型的转换或者使用其他的解决方案。

    2023-08-26 18:51:51
    赞同 展开评论 打赏
  • 十分耕耘,一定会有一分收获!

    楼主你好,在使用阿里云Flink CDC中 oracle19C flinkCdc2.3.0版本时,如果使用DataStream Source,非CDB数据库,表和数据库不必须开启补充日志。

    如果您开启了补充日志,但是出现了表需要开启补充日志的提示,则可能是因为您的表结构发生了变化,例如新增了列或修改了列的数据类型,导致CDC无法正确解析数据。

    如果您出现了无效的列类型的报错,则可能是源表中存在不受支持的数据类型或数据类型转换错误。您可以检查源表中的数据类型是否与CDC支持的数据类型一致,并确保数据类型转换正确。

    2023-08-21 13:54:06
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    对于使用 Flink CDC 2.3.0 版本和 Oracle 19C 数据库,以下是一些关于补充日志和报错的解释和建议:
    图片.png

    1. 数据库补充日志:
    Flink CDC 需要使用 Oracle 数据库的补充日志(Supplemental Logging)来捕获数据变化。为了确保 Flink 可以正确地获取到变更事件,您需要在数据库中开启相应的补充日志。请确保已按照 Flink CDC 的文档中指定的方式正确配置补充日志。

    2. 表和列的补充日志:
    对于非 CDB(Container Database)数据库中的表,只有在数据库级别开启了补充日志,并且表创建时没有手动禁用补充日志时,Flink CDC 才能正确捕获表中的数据变化。因此,在使用 Flink CDC 时,表和列都不需要额外的补充日志设置。

    3. 报错:无效的列类型:
    当在表上启用了 Oracle 的补充日志之后,可能会遇到 "无效的列类型" 错误。这种错误通常是由于某些特殊的列类型(如空间数据、LOB、XML 等)无法被正确捕获而导致的。针对这种情况,您可以尝试以下方法进行解决:

    • 排除无法识别的列类型:在 Flink CDC 的配置中,通过 debezium.transforms 参数指定 unwrap 转换器,排除无法识别的列类型。例如:debezium.transforms=unwrap:drop.tombstones=true,drop.invalid.column.types=true
      图片.png

    • 针对特殊列进行自定义转换:对于无法识别的列类型,您可以使用 Flink CDC 提供的自定义转换来处理。具体实现方式请参考 Flink CDC 的文档和示例。

    2023-08-19 19:11:26
    赞同 展开评论 打赏
  • 对于使用Flink CDC的Oracle 19c和Flink CDC 2.3.0版本,以下是一些要注意的事项:

    1. 补充日志(Supplemental Logging):在使用Oracle数据库进行CDC时,需要启用补充日志。补充日志记录了表的详细变更信息,以便Flink CDC可以捕获到这些变化并进行处理。确保已为相关表开启必要的补充日志。

    2. 非CDB数据库支持:Flink CDC通常支持Oracle的多租户架构(CDB数据库),但对于非CDB数据库,您也可以使用DataStream Source进行CDC。请确保正确配置非CDB数据库的连接信息,并根据实际情况进行测试和验证。

    3. 无效的列类型错误:如果在启用补充日志后遇到“无效的列类型”错误,请检查表结构中的列是否具有受支持的数据类型。某些特殊的或不常见的列类型可能不被Flink CDC支持。您可以尝试调整表结构,将不支持的列类型转换为支持的类型,或者尝试其他解决方案。

    针对您提到的问题,以下是一些建议来解决这些问题:

    • 确保已针对表启用了必要的补充日志,包括主键、唯一键和外键等约束。
    • 检查表结构中的列类型是否受到支持。如果有不受支持的列类型,请尝试修改列类型或者选择其他解决方案。
    • 在遇到问题时,查阅Flink CDC和Oracle 19c的官方文档、用户手册和社区资源,以获取更详细的指导和帮助。
    • 如果问题仍然存在,建议您提供具体的错误信息和相关代码片段,以便进一步诊断和帮助解决。
    2023-08-19 19:08:49
    赞同 展开评论 打赏
  • 你可以尝试以下办法解决
    1、对于非CDB数据库,表和数据库都不需要开启补充日志。
    2、如果在开启补充日志后出现报错,可能是因为数据类型不匹配。可以尝试使用类型转换器将数据类型转换为正确的类型。
    3、如果在开启补充日志后出现无效的列类型错误,可能是因为该表没有配置正确的列信息。需要检查表的配置信息是否正确,并且确保所有需要的列都被正确地配置。
    4、如果以上方法都无法解决问题,可以尝试使用Flink的CDC源码自定义逻辑,以满足特定的需求。

    2023-08-17 10:03:28
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    在使用 Flink CDC 2.3.0 版本进行 Oracle 19C 数据库的数据源同步时,确保你的数据库是非CDB数据库。对于非CDB数据库,Flink CDC 可以通过读取 Oracle 的补充日志(Redo Log)来捕获表级别的变更事件。

    关于你提到的数据库和表是否需要开启补充日志,以及在开启补充日志后出现的无效列类型错误,我提供以下几点建议:

    数据库补充日志开启:确保你的 Oracle 19C 数据库已经开启了补充日志(Supplemental Logging)。补充日志记录了数据库的详细变更信息,使得 Flink CDC 可以捕获到表结构和数据的变化。你可以参考 Oracle 官方文档了解如何开启和配置补充日志。

    表补充日志开启:除了数据库级别的补充日志外,你还需要为需要同步的表开启补充日志。在 Oracle 中,你可以使用 ALTER TABLE 命令来为相应的表开启补充日志。例如,执行以下命令开启指定表的补充日志:

    Copy
    ALTER TABLE table_name ADD SUPPLEMENTAL LOG DATA;
    ```

    注意,如果你有大量的表需要同步,手动为每个表开启补充日志可能会很繁琐。你可以考虑编写脚本或使用 Oracle 提供的工具来批量开启补充日志。

    无效的列类型错误:当你开启了补充日志并尝试进行 Flink CDC 同步时,如果出现无效的列类型错误,可能是由于一些列的数据类型不受支持。在 Flink CDC 中,不支持的列类型可能会导致错误。你可以查看 Flink CDC 的官方文档或社区资源,了解支持的 Oracle 列类型列表,并确保你的表结构中使用的列类型是受支持的。

    如果你遇到无效的列类型错误,通常有两种解决方法:

    一种是修改表结构,将不支持的列类型更改为支持的列类型;
    另一种是通过 Flink CDC 的自定义解析器(CustomDebeziumDeserializationSchema)来处理特殊的列类型,将其转换为支持的类型。
    需要注意的是,Flink CDC 的版本和 Oracle 数据库的版本也可能会对兼容性产生影响。如果遇到问题,建议参考 Flink CDC 和 Oracle 数据库的官方文档,查看它们之间的兼容性信息,以确保所选择的版本是兼容的。

    2023-08-14 18:57:49
    赞同 展开评论 打赏
  • Flink CDC(Change Data Capture)是用于从数据库中捕获数据变更的技术。在使用Flink CDC从Oracle数据库中捕获数据变更时,需要确保数据库开启了补充日志。
    86d17d91b835c5f43db412766440d979_p616430.jpg

    对于非CDB数据库,要求表和数据库都必须开启补充日志。如果数据库已经开启了补充日志,但表没有开启,就会导致报错。因此,需要确保表也开启了补充日志。
    6f4247e5c83f8e6a0d4fb16dcb54d1fa_p380699.png

    另外,如果在开启表的补充日志后出现“无效的列类型”的错误,可能是因为Flink CDC在处理捕获的数据时无法正确解析表结构。这可能是因为Flink CDC版本与Oracle数据库版本不兼容,或者Flink CDC没有正确配置以处理表结构的变化。

    27326b9e9da34c17a73bc5d35bf4874a_p380718.png

    2023-08-14 14:32:36
    赞同 展开评论 打赏
  • 全栈JAVA领域创作者

    您好,如果您使用Flink CDC中的Oracle 19C版本,那么您需要注意以下几点:

    使用DataStream Source:您可以使用Flink CDC提供的DataStream Source API,对数据进行读取和写入操作。同时,您还需要在配置文件中,指定snapshot参数和snapshotPath参数,以启用Snapshot功能。
    非CDB数据库:如果您使用Flink CDC中的Oracle 19C版本,那么您需要注意非CDB数据库的配置。具体来说,您需要在配置文件中,指定database参数和host参数,以指定数据源的名称和地址。
    补充日志:如果您使用Flink CDC中的Oracle 19C版本,那么您需要注意补充日志的开启。具体来说,如果您的数据源表和数据库都需要开启补充日志,那么您需要在配置文件中,指定enableAdditionalLog参数和logName参数,以启用补充日志功能。
    无效的列类型:如果您使用Flink CDC中的Oracle 19C版本,那么您可能会遇到无效的列类型的问题。这是因为Oracle 19C版本中,某些列类型可能不支持Flink CDC的数据类型。因此,您需要在配置文件中,指定schema参数和tableSchema参数,以指定数据源表的列类型和结构。
    需要注意的是,如果您使用Flink CDC中的Oracle 19C版本,那么您需要注意数据的处理效率和准确性。同时,您还需要注意数据的安全性和可靠性,以保证数据的正确性和可靠性。

    2023-08-14 13:29:38
    赞同 展开评论 打赏
滑动查看更多

大数据领域前沿技术分享与交流,这里不止有技术干货、学习心得、企业实践、社区活动,还有未来。

相关产品

  • 实时计算 Flink版
  • 相关电子书

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

    相关镜像