【问题标题】:No suitable driver found for jdbc - Oracle, while connecting with Kafka Connect没有为 jdbc - Oracle 找到合适的驱动程序,同时与 Kafka Connect 连接
【发布时间】:2020-06-23 06:15:58
【问题描述】:

我正在尝试在独立模式下使用 Oracle jdbc8 (ojdbc8.jar) 在 Kafka 中运行 Oracle 源连接器。我已经从 Oracle 网站下载了 confluent 的 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 变量中。它没有用,抛出与上述相同的错误。我还可以分别对 IP 和端口进行 ping 和 telnet。

我的连接器配置如下:

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

plugins.path: /home/plugins

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

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

【问题讨论】:

  • 您能否编辑您的问题以包含完整的文件夹列表,其中列出了您的 JDBC 驱动程序和 Kafka Connect JDBC JAR 的位置?
  • @RobinMoffatt,最后编辑。请检查!是的,我已经阅读了那篇博文。
  • 你能发布 full 错误吗? Couldn't open connection to jdbc:oracle:thin:@x.x.x.x:yyyy:zzz 之后是什么?
  • 如果您对在本地系统中工作的 Oracle DB 使用相同的设置,它是否有效?反之亦然 - 如果您使用本地系统连接到此测试系统中的 Oracle 数据库?

标签: oracle jdbc apache-kafka apache-kafka-connect ojdbc


【解决方案1】:

您的ojdbc8.jar 需要与 Kafka Connect JDBC JAR 位于同一文件夹中

因此,如果 Kafka Connect JDBC JAR 在 /home/plugins/connectors/lib 中,那么也将 ojdbc8.jar 放在那里。

【讨论】:

  • 我最初尝试过。没有工作,并给出了同样的错误。看了你的回答,我又试了一次。但仍然是同样的错误。
  • 我在上面的答案中提供的结构与我的本地系统相同,并且在那里运行良好。
【解决方案2】:

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

【讨论】:

猜你喜欢
  • 2020-03-17
  • 1970-01-01
  • 1970-01-01
  • 2023-02-03
  • 1970-01-01
  • 1970-01-01
  • 2019-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多