debezium: java.sql.SQLException: не найдено подходящего драйвера: jdbc:oracle:oci:@orclnode:1527/mydb

Я получаю следующее исключение при запуске debezium с confluent enterprise.

На первый взгляд это выглядит как незначительная проблема, но я пробовал разные драйверы, и они у меня не работают. Debezium использует драйверы OCI, и это первый раз, когда я его устанавливаю, но я следовал инструкциям на веб-сайте Oracle для установки драйвера.

Моя версия Oracle:

Я пробовал следующие несколько драйверов и многое другое

`SELECT * FROM v$version;
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
"CORE   11.2.0.4.0  Production"
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production`

Я устанавливаю мгновенный клиент в своем локальном компьютере, а база данных оракула работает на удаленном компьютере. Нужно ли мне добавлять какие-либо другие файлы, кроме загруженного zip-файла мгновенного клиента?

`
[user@nodexxx oracle]$ ls -l
total 8
drwxr-xr-x. 2 root    root  271 Jan 10 10:45 instantclient_11_2
drwxr-xr-x. 2 user root 4096 Jan 15 11:36 instantclient_12_2
drwxr-xr-x. 3 user root 4096 Jan  8 16:54 instantclient_19_5
[user@nodexxx oracle]$ echo $LD_LIBRARY_PATH
/opt/oracle/instantclient_12_2:
[user@nodexxx oracle]$ echo $PATH
/opt/oracle/instantclient_12_2::/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/app/confluent-5.3.1/bin:/usr/java/jdk1.8.0_231/bin:/home/user/.local/bin:/home/user/bin
[user@nodexxx oracle]$
`

Мой дистрибутив Linux показан ниже:

Развернутая конфигурация моего соединителя показана ниже:

`
[user@nodexxx oracle]$ sudo lsb_release -a
[sudo] password for user:
LSB Version:    :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID: RedHatEnterpriseServer
Description:    Red Hat Enterprise Linux Server release 7.6 (Maipo)
Release:        7.6
Codename:       Maipo
`

Я застрял и понятия не имею, как решить эту проблему.

    {
  "name": "test-debezium-1",
  "config": {
    "connector.class": "io.debezium.connector.oracle.OracleConnector",
    "tasks.max": "1",
    "database.tablename.case.insensitive": "true",
    "database.oracle.version": "11",
    "database.server.name": "deb-linux",#its just a logical name 
    "database.hostname": "orclnode",
    "database.port": "1527",
    "database.user": "xstream",
    "database.password": "xstream",
    "database.dbname": "mydb",
    "database.pdb.name": "",
    "database.out.server.name": "dbzxout",
    "database.history.kafka.bootstrap.servers": "kafka1:9092,kafka2:9092,kafka3:9092",
    "database.history.kafka.topic": "debezium-inventory-topic",
    "snapshot.mode": "initial",
    "table.whitelist": "orcl\\.debezium\\.(.*)",
    "name": "test-debezium-1"
  },
  "tasks": [
    {
      "connector": "test-debezium-1",
      "task": 0
    }
  ],
  "type": "source"
}

Пожалуйста, покажите свой

`SELECT * FROM v$version;
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
"CORE   11.2.0.4.0  Production"
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production`
. Где находится ваш JAR-файл?


person Zamir Arif    schedule 15.01.2020    source источник
comment
plugin.path=/app/confluent-5.3.1/share/java,/dev2/connectors,/opt/oracle/instantclient_12_2 — я также добавил мгновенный клиент только для тестирования. Я знаю, что там это не требуется. Коннектор Debezium находится в /dev2/connector, который подхватывается, и центр управления также показывает коннектор debezium.   -  person OneCricketeer    schedule 15.01.2020
comment
Я не знаком с Оракл. Что находится в папке _1_? Файлы JDBC необходимо скопировать в папку _2_, они не являются плагинами с точки зрения Kafka Connect, поэтому не сканируются и не добавляются в путь к классам.   -  person Zamir Arif    schedule 15.01.2020
comment
Я не говорю о коннекторе JDBC. Это работает для меня. Этот поток касается соединителя CDC debzium, который работает с драйвером OCI, а InstantClient_12_2 — это драйвер OCI от Oracle.   -  person OneCricketeer    schedule 15.01.2020
comment
Хорошо, тогда почему вы опубликовали ошибку этого? _1_. Это явно ошибка JDBC   -  person Zamir Arif    schedule 15.01.2020
comment
Да, вы правы, но если это ошибка JDBC, URL-адрес будет немного другим. У этого java.sql.SQLException: No suitable driver found for jdbc:oracle:oci:@orclnode:1527/mydb есть oci, но у jdbc будет что-то вроде этого _2_. Для меня коннекторы JDBC работают.   -  person OneCricketeer    schedule 15.01.2020
comment
jdbc:oracle:oci:@orclnode:1527/mydb и jdbc:oracle:thin:@orclnode:1527:mydb это разные протоколы. _3_ определяет JAR драйвера, который у вас отсутствует.   -  person Zamir Arif    schedule 15.01.2020
comment
Давайте продолжим обсуждение в чате.   -  person OneCricketeer    schedule 15.01.2020
comment
Как говорится в документации Debezium. Скопируйте файлы _ojdbc8.jar и xstreams.jar из Instant Client в каталог libs Kafka. В вашем случае это должно быть _1_, и повторите это на всех машинах debezium. Затем вы перезапустите debezium   -  person Zamir Arif    schedule 15.01.2020
comment
Спасибо за ответ. Я ошибся раньше. Я копировал эти банки в /usr/share/java/kafka, которые я переместил в _2_, который является правильным каталогом, как вы упомянули, но я все еще получаю ту же ошибку.   -  person OneCricketeer    schedule 15.01.2020
comment
А вы перезапускали процесс Connect? Как насчет того, чтобы поместить их в /app/confluent-5.3.1/lib?   -  person Zamir Arif    schedule 16.01.2020
comment
Спасибо за ответ. Перезапуск соединителя устранил эту ошибку, но у меня все еще есть проблема с подключением. Когда я развернул коннектор, все мои коннекторы JDBC потерпели неудачу, потому что они работали на том же узле. Затем я удалил банку ojdbc6 из пути коннектора jdbc, и, что удивительно, мои коннекторы JDBC работают с банками тонкого клиента OCI, но Debezium жалуется на share/java/kafka-connect-jdbc, но библиотека существует в пути к классам, и коннектору JDBC также нужен этот файл и его работа.   -  person OneCricketeer    schedule 16.01.2020
comment
Я думаю, что java.lang.UnsatisfiedLinkError: no ocijdbc12 in java.library.path можно установить как _2_, а затем запустить скрипт коннектора после этого экспорта   -  person Zamir Arif    schedule 16.01.2020
comment
org.apache.kafka.connect.errors.ConnectException: Исключение возникло в источнике событий изменения. Этот соединитель будет остановлен. в io.debezium.connector.base.ChangeEventQueue.throwProducerFailureIfPresent(ChangeEventQueue.java:171) в io.debezium.connector.base.ChangeEventQueue.poll(ChangeEventQueue.java:151) в io.debezium.connector.oracle.OracleConnectorTask.poll (OracleConnectorTask.java:110) по адресу org.apache.kafka.connect.runtime.WorkerSourceTask.poll(WorkerSourceTask.java:259) по адресу org.apache.kafka.connect.runtime.WorkerSourceTask.execute(WorkerSourceTask.java:226) по адресу org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:177) в org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:227) в java.util.concurrent.Executors$ RunnableAdapter.call(Executors.java:511) в java.util.concurrent.FutureTask.run(FutureTask.java:266) в java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) в java.util.concurrent .ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:617) в java.lang.Thread.run(Thread.java:745) Вызвано: java.lang.RuntimeException: java.lang.RuntimeException: java.sql.SQLException: не найден подходящий драйвер для jdbc: oracle:oci:@orclnode:1527/mydb на io.debezium.relational.RelationalSnapshotChangeEventSource.execute(RelationalSnapshotChangeEventSource.java:108) на io.debezium.pipeline.ChangeEventSourceCoordinator.lambda$start$0(ChangeEventSourceCoordinator.java:87) на io. debezium.pipeline.ChangeEventSourceCoordinator$$Lambda$485/1478798798.run(Неизвестный источник) ... еще 5 Причина: java.lang.RuntimeException: java.sql.SQLException: Не найден подходящий драйвер для jdbc:oracle:oci:@orclnode :1527/mydb в io.debezium.connector.oracle.OracleConnection.setSessionToPdb(OracleConnection.java:51) в io.debezium.connector.oracle.OracleSnapshotChangeEventSource.prepare(OracleSnapshotChangeEventSource.java:72) at io.debezium.relational.RelationalSnapshotChangeEventSource.execute(RelationalSnapshotChangeEventSource.java:104) ... еще 7 Причина: java.sql.SQLException: не найден подходящий драйвер для jdbc:oracle:oci:@orclnode:1527/mydb в java .sql.DriverManager.getConnection(DriverManager.java:689) в java.sql. DriverManager.getConnection(DriverManager.java:247) в io.debezium.connector.oracle.OracleConnectionFactory.connect(OracleConnectionFactory.java:25) в io.debezium.jdbc.JdbcConnection.connection(JdbcConnection.java:768) в io.debezium .jdbc.JdbcConnection.connection(JdbcConnection.java:763) в io.debezium.connector.oracle.OracleConnection.setSessionToPdb(OracleConnection.java:47) ... еще 9 [2020-01-15 12:15:25,447] ОШИБКА WorkerSourceTask{id=test-debezium-1-0} Задача завершается и не будет восстановлена ​​до перезапуска вручную (org.apache.kafka.connect.runtime.WorkerTask:180)   -  person OneCricketeer    schedule 17.01.2020