当前位置: 首页 > 知识库问答 >
问题:

没有为jdbc:oracle:oci找到合适的驱动程序

司寇嘉茂
2023-03-14

当我创建kafka jdbc源连接器(debezium连接器用于带有confluent-5.4.0的oracle)时,出现错误“没有找到适合jdbc: oracle: oci…”。

[2020-03-23 11:49:44,521] ERROR WorkerSourceTask{id=debezium-souce-inventory-0} Task threw an uncaught and unrecoverable exception (org.apache.kafka.connect.runtime.WorkerTask:179)
org.apache.kafka.connect.errors.ConnectException: An exception ocurred in the change event producer. This connector will be stopped.
    at io.debezium.connector.base.ChangeEventQueue.throwProducerFailureIfPresent(ChangeEventQueue.java:170)
    at io.debezium.connector.base.ChangeEventQueue.poll(ChangeEventQueue.java:151)
    at io.debezium.connector.oracle.OracleConnectorTask.poll(OracleConnectorTask.java:110)
    at org.apache.kafka.connect.runtime.WorkerSourceTask.poll(WorkerSourceTask.java:265)
    at org.apache.kafka.connect.runtime.WorkerSourceTask.execute(WorkerSourceTask.java:232)
    at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:177)
    at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:227)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.RuntimeException: java.sql.SQLException: No suitable driver found for jdbc:oracle:oci:@test:1521/testdb
    at io.debezium.relational.RelationalSnapshotChangeEventSource.execute(RelationalSnapshotChangeEventSource.java:179)
    at io.debezium.pipeline.ChangeEventSourceCoordinator.lambda$start$0(ChangeEventSourceCoordinator.java:83)
    ... 5 more
Caused by: java.sql.SQLException: No suitable driver found for jdbc:oracle:oci:@test:1521/testdb
    at java.sql.DriverManager.getConnection(DriverManager.java:689)
    at java.sql.DriverManager.getConnection(DriverManager.java:247)
    at io.debezium.connector.oracle.OracleConnectionFactory.connect(OracleConnectionFactory.java:25)
    at io.debezium.jdbc.JdbcConnection.connection(JdbcConnection.java:756)
    at io.debezium.jdbc.JdbcConnection.connection(JdbcConnection.java:751)
    at io.debezium.relational.RelationalSnapshotChangeEventSource.execute(RelationalSnapshotChangeEventSource.java:119)
    ... 6 more
[2020-03-23 11:49:44,521] ERROR WorkerSourceTask{id=debezium-souce-inventory-0} Task is being killed and will not recover until manually restarted (org.apache.kafka.connect.runtime.WorkerTask:180)

我的oracle版本是企业版发布11.2.0.4.0-64位生产,我尝试了不同的驱动程序jar,但得到了相同的异常。

我的jdk版本是:

[root@vtsz-big-dwh02 /]# echo $JAVA_HOME
/usr/java/jdk1.8.0_191

我已经将 debezium-连接器-预言机添加到文件夹融合-5.4.0/share/java。

正如Debezium文档所说,我安装即时客户端并复制文件_ojbc8.jar和xtream。jar从Instant Client进入Kafka的libs

Directiry(confluent-5.4.0/share/java/kafkaconfluent-5.4.0/share/java/kafka-connect-jdbc,/opt/confluent-5.4.0/lib/usr/share/java')。

[root@vtsz-big-dwh02 java]# echo $LD_LIBRARY_PATH
/home/app/instantclient_11_2/:

我的源连接器配置为:

{
  "name": "debezium-souce-idea-inventory",
  "config": {
      "connector.class": "io.debezium.connector.oracle.OracleConnector",
      "tasks.max": "1",
      "database.server.name":"testdb",
      "database.out.server.name":"testdb",
      "database.hostname": "10.0.10.169",
      "database.port": "1521",
      "database.user": "mytest",
      "database.password": "mytest",
      "database.dbname" : "testdb",
      "table.whitelist": "ideas.WMS_INVENTORY",
      "database.history.kafka.bootstrap.servers":"localhost:9092",
      "database.history.kafka.topic":"schema-changes.inventory"
      }
 }

共有1个答案

漆雕奇
2023-03-14

您需要将连接器(在本例中为Debezium)所依赖的JAR文件放在与连接器插件相同的文件夹(或子文件夹)中。

所以与其把它们放进去

confluent-5.4.0/share/java/kafka
/opt/confluent-5.4.0/lib
/usr/share/java
confluent-5.4.0/share/java/kafka-connect-jdbc

把它们放进去

confluent-5.4.0/share/java/debezium-connector-oracle

(或者实际的Debezium JAR插件所在的位置)

 类似资料:
  • 我正在使用JDBC接收器连接器尝试Kafka和Postgres接收器。 例外: 水槽特性: 我已经设置了< code > plugin . path =/usr/share/Java/Kafka-connect-JDBC /usr/share/java/kafka-connect-jdbc我有以下文件: , , 和其他一些基本上与汇合物一起打包的罐子。 然后我下载了 postgres-jdbc 驱

  • 试图连接到允许远程连接的免费mysql数据库主机,但我遇到了以下错误: 未找到适合jdbc的驱动程序:mysql://xx2-23-x1-2x1-172.compuxe-1.xmazonaws.com:3306 我使用下面的代码。 编辑 Stack Trace显示在下面:

  • 我以前使用过Apache Derby,但从未在Gradle项目中使用过它。通过运行以下命令,我使用Derby工具在项目的根目录中创建了一个简单的Derby数据库: 在此之后,中的Java代码如下所示: 最初,我似乎能够加载,但是当我试图获得到数据库的连接时,我会得到。第一行确保当前工作目录是数据库所在的项目的根目录。 我以前使用过Apache Derby,我可以在没有Gradle的情况下使用这些代

  • 我正在尝试使用以下代码将我的JavaMaven项目(在Jetty服务器上运行)连接到Google Cloud MySQL数据库: 我已经在pom中包含了这两个依赖项。xml: 我要走了 JAVAsql。SQLException:找不到适合jdbc的驱动程序:mysql://google... 我不知道该怎么办。我假设依赖项应该处理将JDBC驱动程序添加到我的类路径。

  • 我试图编写一个连接到MySQL数据库的java程序。但是我得到了这个错误: 没有找到适合jdbc:mysql//localhost:3306/test的驱动程序 我已经安装了。我还是会犯这个错误。 这是我的程序:

  • 我已经花了3个小时试图让我的Java程序与我的Postgres服务器接口。我无法通过错误消息“没有找到适合jdbc:postgresql://localhost:5432/gis的驱动程序”。这是一个Bukkit插件,我正在使用IntelliJ IDEA。 代码: 我尝试过的事情: > 直接将jdbc文件内部添加到jar文件中 在IntelliJ项目中添加jdbc文件作为依赖项 切换到maven,