You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Debezium-Oracle-Connector异常:无法解析Oracle数据库版本求助

Debezium-Oracle-Connector 报错:Failed to resolve Oracle database version

环境配置

  • 本地Windows系统安装Oracle数据库
  • 通过Docker运行Kafka Connect,使用镜像:
connect:
    image: debezium/connect-with-oracle-jdbc:2.6

连接器配置

{
  "name": "inventory-connector",
  "config": {
    "connector.class" : "io.debezium.connector.oracle.OracleConnector",
    "topic.prefix" : "server1",
    "tasks.max" : "1",
    "database.server.name" : "XEPDB1",
    "database.hostname" : "localhost",
    "database.port" : "1521",
    "database.user" : "DBZUSER",
    "database.password" : "oracle",
    "database.dbname" : "XEPDB1",
    "database.pdb.name" : "XEPDB1",
    "database.connection.adapter" : "logminer",
    "database.history.kafka.bootstrap.servers" : "kafka:9092",
    "database.history.kafka.topic": "schema-changes.inventory",
    "database.oracle.version": "12+",

    "transforms": "route",

    "transforms.route.type": "org.apache.kafka.connect.transforms.RegexRouter",
    "transforms.route.regex": "([^.]+)\\.([^.]+)\\.([^.]+)",
    "transforms.route.replacement": "$3",

    "table.include.list": "DBZUSER\\.CUSTOMERS",
    "column.include.list": "DBZUSER\\.CUSTOMERS\\.(ID|FIRST_NAME|LAST_NAME)"
  }
}

异常信息

2024-05-23 23:35:03 2024-05-23 18:05:03,519 ERROR  ||  Failed testing connection for {connector.class=io.debezium.connector.oracle.OracleConnector, database.user=DBZUSER, database.dbname=XEPDB1, tasks.max=1, database.pdb.name=XEPDB1, database.connection.adapter=logminer, database.history.kafka.bootstrap.servers=kafka:9092, database.history.kafka.topic=schema-changes.inventory, transforms=route, database.server.name=XEPDB1, column.include.list=DBZUSER\.CUSTOMERS\.(ID|FIRST_NAME|LAST_NAME), database.port=1521, transforms.route.type=org.apache.kafka.connect.transforms.RegexRouter, topic.prefix=server1, transforms.route.regex=([^.]+)\.([^.]+)\.([^.]+), database.hostname=localhost, database.password=********, name=inventory-connector, database.oracle.version=12+, table.include.list=DBZUSER\.CUSTOMERS, transforms.route.replacement=$3} with user '[database.user,null,[],[],true]'   [io.debezium.connector.oracle.OracleConnector]
2024-05-23 23:35:03 org.apache.kafka.connect.errors.RetriableException: Failed to resolve Oracle database version
2024-05-23 23:35:03     at io.debezium.connector.oracle.OracleConnection.resolveOracleDatabaseVersion(OracleConnection.java:201)
2024-05-23 23:35:03     at io.debezium.connector.oracle.OracleConnection.<init>(OracleConnection.java:110)
2024-05-23 23:35:03     at io.debezium.connector.oracle.OracleConnection.<init>(OracleConnection.java:91)
2024-05-23 23:35:03     at io.debezium.connector.oracle.OracleConnector.validateConnection(OracleConnector.java:78)
2024-05-23 23:35:03     at io.debezium.connector.common.RelationalBaseSourceConnector.validate(RelationalBaseSourceConnector.java:42)

解决方案

  • 修正网络连通配置:Docker容器无法直接识别Windows的localhost,将database.hostname替换为Windows主机的实际内网IP(如192.168.x.x),同时确保Oracle数据库的1521端口已对外开放,容器能正常访问该IP和端口。
  • 指定具体数据库版本:将database.oracle.version的12+改为实际Oracle版本号(如Oracle XE 18c写18,19c写19),避免模糊版本号导致解析失败。
  • 验证数据库账号权限:确认DBZUSER拥有连接到PDB(XEPDB1)的权限,且能执行版本查询语句(如SELECT version FROM v$instance)。可先用sqlplus或JDBC工具测试账号连接是否正常。
  • 检查JDBC驱动兼容性:确保Debezium镜像中的Oracle JDBC驱动版本与本地Oracle数据库版本匹配,若不兼容需替换镜像内的驱动包。

内容的提问来源于stack exchange,提问作者prashant.kr.mod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 13:43:23