使用Kafka Connect连接时,未找到适合jdbc-Oracle的驱动程序

使用Kafka Connect连接时,未找到适合jdbc-Oracle的驱动程序,oracle,jdbc,apache-kafka,apache-kafka-connect,ojdbc,Oracle,Jdbc,Apache Kafka,Apache Kafka Connect,Ojdbc,我试图在独立模式下使用OracleJDBC8(ojdbc8.jar)在Kafka中运行oracle源代码连接器。我已经从Oracle网站下载了confluent的JDBCJAR和ojdbc8.jar。我已经在本地测试了它,它工作得很好,但是在我们的测试环境中,它抛出了以下错误: No suitable driver found for jdbc:oracle:thin:@x.x.x.x:yyyy:zzz for configuration Couldn't open connection to

我试图在独立模式下使用OracleJDBC8(ojdbc8.jar)在Kafka中运行oracle源代码连接器。我已经从Oracle网站下载了confluent的JDBCJAR和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
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
但此处给定的connection.user在Oracle中具有“只读”权限。这可能是个问题吗?

connect-standalone.properties文件如下所示:

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
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版本:18c
卡夫卡版本:2.3.0
Scala版本:2.12.2

插件。路径:/home/plugins

插件路径结构:/home/Plugins/connectors/[资产、文档、库等文件夹],ojdbc8.jar


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

您的
ojdbc8.jar
需要与kafka-connect jdbc jar位于同一文件夹中


因此,如果Kafka Connect JDBC JAR位于
/home/plugins/connectors/lib
中,那么也将
ojdbc8.JAR
放入其中

如果您使用的是java11,请更新到ojdbc10。对于kafka,ojdbc8与java8兼容,ojdbc10与java11兼容。

您是否可以编辑您的问题,以包含JDBC驱动程序和kafka Connect JDBC JAR的完整文件夹列表?您是否已查看?@RobinMoffatt,最后编辑。请检查!是的,我读过那篇博文。你能把全部错误发出来吗?
无法打开到jdbc:oracle:thin:@x.x.x:yyyy:zzz的连接之后会发生什么?
如果您对本地系统中的oracle DB使用相同的设置,它会起作用吗?如果您在这个测试系统中使用您的本地系统连接到Oracle DB?我最初尝试过。不起作用,并给出了相同的错误。读完你的答案后,我又试了一次。但仍然是相同的错误。我在上面的回答中提供的结构与我的本地系统相同,并且在那里工作良好。ojdbc8.jar也可以与JDK11一起使用。查看带有JDK10的常见问题解答()ojdbc10.jar,带有JDK8、JDK9、JDK11的JDK11 ojdbc8.jar