Flink CDC中oracle的cdc遇到这个错误,有没有哪位朋友碰到过,Caused by: io.debezium.connector.oracle.logminer.parser.DmlParserException: Unknown supported SQL '/ No SQL_REDO for temporary tables /'
at io.debezium.connector.oracle.logminer.parser.LogMinerDmlParser.parse(LogMinerDmlParser.java:80)
at io.debezium.connector.oracle.logminer.processor.AbstractLogMinerEventProcessor.parseDmlStatement(AbstractLogMinerEventProcessor.java:1078)
... 16 more?
这个错误看起来是由于在Flink CDC中使用Oracle CDC时,遇到了不支持的SQL语句导致的。具体来说,错误信息中的"No SQL_REDO for temporary tables"表示Oracle LogMiner无法处理临时表的SQL_REDO记录。
为了解决这个问题,您可以尝试以下几种方法:
检查您的SQL语句,确保不要涉及到临时表。如果需要使用临时表,可以考虑在其他地方进行处理,或者使用其他方式来实现所需的功能。
检查您的Oracle配置,确保已经开启了归档日志和补充日志。这是因为Flink CDC基于Debezium的LogMiner实现,LogMiner需要使用Oracle的归档日志和补充日志来获取变更数据。
检查您的Flink程序,确保正确创建了Oracle CDC连接。
如果可能,尝试升级您的Oracle版本,因为某些不兼容的问题可能在较新的版本中得到解决。
这个错误是由于 Flink CDC 使用的 Oracle CDC 连接器中的 LogMinerDmlParser 遇到了未知的 SQL 语句导致的。具体错误信息为 Unknown supported SQL '/ No SQL_REDO for temporary tables /'
。
根据错误信息,看起来是 LogMinerDmlParser 在解析 SQL 语句时遇到了不支持的语句,即 / No SQL_REDO for temporary tables /
。这可能是由于 Oracle CDC 不支持对临时表进行 SQL_REDO 操作。
要解决这个问题,有几个可能的方法:
排除临时表:在 Flink CDC 的配置中,过滤掉临时表,只选择需要同步的正式表进行变更捕获和同步。
处理临时表数据:如果临时表中的数据对您的业务逻辑很重要,您可以考虑将临时表中的数据迁移到正式表中,并确保正式表能够被 CDC 监听和同步。
自定义解决方案:根据您的具体需求,可以考虑编写自定义逻辑来处理临时表的变更。例如,您可以通过监听相关事件或轮询查询来捕获临时表的变更,并采取相应的处理措施。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。