各位大佬,有没有人使用flink cdc采集oracle 19C,我采集oracle 19c出现这个

各位大佬,有没有人使用flink cdc采集oracle 19C,我采集oracle 19c出现这个问题。我捕捉mysql用print,就没更新过,2023-04-17 09:41:27,828 ERROR io.debezium.connector.oracle.logminer.LogMinerHelper [] - Mining session stopped due to the java.sql.SQLException: ORA-00604: error occurred at recursive SQL level 1 ORA-14400: inserted partition key does not map to any partition ORA-06512: at "SYS.LOGMNR_KRVRDLUID3", line 4162 ORA-06512: at "SYS.LOGMNR_KRVRDLUID3", line 2876 ORA-06512: at "SYS.LOGMNR_KRVRDLUID3", line 224 ORA-06512: at line 10 ORA-06512: at "SYS.DBMS_SQL", line 1721 ORA-06512: at "SYS.LOGMNR_KRVRDLUID3", line 211 ORA-06512: at "SYS.LOGMNR_KRVRDLUID3", line 563 ORA-06512: at "SYS.LOGMNR_KRVRDLUID3", line 2849 ORA-06512: at "SYS.LOGMNR_KRVRDLUID3", line 4093 ORA-06512: at line 1 ORA-06512: at "SYS.DBMS_LOGMNR", line 72 ORA-06512: at line 1

展开
收起
真的很搞笑 2023-04-25 17:47:52 311 分享 版权
阿里云 AI 助理回答
  1. 问题描述: 您在使用Flink CDC采集Oracle 19C数据库时遇到错误,具体表现为LogMiner作业因SQL异常停止,错误信息涉及分区键与分区映射不匹配的问题。

  2. 背景信息

    • Flink CDC:Apache Flink的Change Data Capture功能,用于捕获数据库中的数据变更事件(如INSERT、UPDATE、DELETE)并传输到其他系统或存储中。
    • Oracle LogMiner:Oracle数据库提供的工具,用于分析在线重做日志文件,以获取对数据库所做的更改。这是Flink CDC连接Oracle时常用的机制来捕获变更数据。
    • ORA-14400错误:此错误表明尝试插入的数据的分区键值没有对应到表定义中的任何分区上,通常发生在分区表操作时。
  3. 解决方案

    • 检查表结构:首先确认目标表是否为分区表,并检查其分区策略和分区键定义。确保插入或更新的数据符合分区规则。
    • 验证数据一致性:检查引起错误的数据记录,确认其分区键值是否有效,即是否落在已定义的分区范围内。
    • 调整LogMiner配置:如果问题与LogMiner解析日志有关,考虑调整LogMiner的启动参数,比如通过DBMS_LOGMNR.START_LOGMNR函数的选项参数,确保正确处理特殊场景的日志。
    • 权限检查:确认Flink CDC使用的用户(如C##DBZUSER)具有足够的权限访问和操作相关表,包括查询系统权限和表权限。
    • 日志分析:利用提供的SQL命令深入分析补偿日志,特别是DBMS_LOGMNR相关的命令,帮助定位问题发生的特定事务和上下文。
  4. 注意事项

    • 数据类型兼容性:确保Flink CDC配置中指定的数据类型与Oracle表列完全一致,避免隐式转换导致的分区键值不匹配。
    • 环境差异:如果是在CDB(PDB)环境下操作,确保正确的容器被设置为目标,使用ALTER SESSION SET CONTAINER = CDB$ROOT;或相应PDB名称进行切换。
    • 版本兼容性:确认Flink CDC与Oracle 19C之间的兼容性,必要时查阅官方文档或社区讨论,了解是否有已知问题或特定配置需求。
  5. 示例代码(仅示意,需根据实际情况调整):

-- 启动LogMiner进行详细日志分析
BEGIN
  DBMS_LOGMNR.ADD_LOGFILE(LOGFILENAME => '/your_log_file_path/archivelogfilename.arc', OPTIONS => DBMS_LOGMNR.NEW);
  DBMS_LOGMNR.START_LOGMNR(Options => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);
END;
/
  1. 参考资料
    • Oracle CDC集成问题及排查步骤来源于实时集成Oracle CDC相关问题文档。

请按照上述步骤逐一排查并解决,如有进一步的技术细节需要了解,请参考Oracle官方文档或Flink CDC相关指南。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答

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

还有其他疑问?
咨询AI助理