找不到与jdbc相匹配的驱动程序-Oracle,与Kafka Connect连接时

问题描述 投票:4回答:2

我正在尝试以独立模式使用Oracle jdbc8(ojdbc8.jar)在Kafka中运行oracle源连接器。我已经从Oracle网站下载了合流的jdbc jar和ojdbc8.jar。我已经在本地进行了测试,并且工作正常,但是在我们的测试环境中,它抛出了以下错误:

No suitable driver found for jdbc:oracle:thin:@x.x.x.x:yyyy:zzz for configuration Couldn't open connection to jdbc:oracle:thin:@x.x.x.x:yyyy:zzz

完整错误消息:

ERROR Failed to create job for xyz/xyz.properties (org.apache.kafka.connect.cli.ConnectStandalone:110)
[2020-03-11 13:13:32,085] ERROR Stopping after connector error (org.apache.kafka.connect.cli.ConnectStandalone:121)
java.util.concurrent.ExecutionException: org.apache.kafka.connect.runtime.rest.errors.BadRequestException: Connector configuration is invalid and contains the following 2 error(s):
Invalid value java.sql.SQLException: No suitable driver found for jdbc:oracle:thin:@x.x.x.x:1521:xyz for configuration Couldn't open connection to jdbc:oracle:thin:@x.x.x.x:1521:xyz
Invalid value java.sql.SQLException: No suitable driver found for jdbc:oracle:thin:@x.x.x.x:1521:xyz for configuration Couldn't open connection to jdbc:oracle:thin:@x.x.x.x:1521:xyz

插件的路径也很好,因为它正在注册所有的jar。我尝试了一些在线发现的修复程序,其中包括将插件路径放入CLASSPATH变量中。它不起作用,引发了与上述相同的错误。我也能够分别ping和telnet IP和端口。

我的连接器配置如下:

name=oracle-jdbc-connect
connector.class=io.confluent.connect.jdbc.JdbcSourceConnector
tasks.max=1
connection.url=jdbc:oracle:thin:@x.x.x.x:yyyy:zzz
connection.user=xyz
connection.password=xyz
query=SELECT cast(ID AS NUMBER(7, 0)) AS ID, NAME FROM sch.tbl
mode=incrementing
incrementing.column.name=ID
topic.prefix=topic-test
schema.pattern=sch
numeric.mapping=best_fit
dialect.name=OracleDatabaseDialect
timestamp.delay.interval.ms=5000
key.converter=org.apache.kafka.connect.json.JsonConverter
value.converter=org.apache.kafka.connect.json.JsonConverter
key.converter.schemas.enable=false
value.converter.schemas.enable=false
decimal.handling.mode=double
include.schema.changes=false

不过,此处给出的connection.user在Oracle中具有“只读”特权。这可以成为一个问题吗?connect-standalone.properties文件如下:

key.converter=org.apache.kafka.connect.json.JsonConverter
value.converter=org.apache.kafka.connect.json.JsonConverter
key.converter.schemas.enable=true
value.converter.schemas.enable=true
offset.storage.file.filename=/tmp/connect.offsets
offset.flush.interval.ms=10000
rest.host.name=x.x.x.x
rest.port=8877 # Some random port
plugin.path=/home/plugins/,/usr/share/java,/usr/local/share/kafka/plugins

Oracle版本: 18cKafka版本: 2.3.0Scala版本: 2.12.2

plugins.path: / home / plugins

插件路径结构:/ home / plugins / connectors / [文件夹,如资产,文档,lib等],ojdbc8.jar。

在/ home / plugins / connectors / lib内部,我有kafka-connect-jdbc-5.4.0.jar文件。

oracle jdbc apache-kafka apache-kafka-connect ojdbc
2个回答
0
投票

请确保plugin.path指向插件所在的父分支。例如,我的插件位于/opt/kafka/share/java/plugins的子目录中,而我的

plugin.path=/opt/kafka/share/java/plugins

确保执行connect-standalone的用户-我假设您正在配置中使用该用户-对插件目录和文件具有读写访问权限。


0
投票

您的ojdbc8.jar必须为在同一文件夹中>与Kafka Connect JDBC JAR。

因此,如果/home/plugins/connectors/lib中存在Kafka Connect JDBC JAR,则也将ojdbc8.jar放在其中。

© www.soinside.com 2019 - 2024. All rights reserved.