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
相关产品推荐
相关产品推荐

