Соединитель Debezium для Oracle — не получает новых элементов или обновлений в таблице

#apache-kafka #apache-kafka-connect #debezium

#apache-kafka #apache-kafka-connect #debezium

Вопрос:

Контекст: я установил кластер Kafka с диаграммой confluent helm в AWS Kubernetes.

И я настроил сервер Oracle, чтобы я мог подключиться к нему с помощью Kafka Connect.

Моя конфигурация Kafka connect

 {
    "name": "oracle-debez",
    "config": {
        "connector.class" : "io.debezium.connector.oracle.OracleConnector",
        "tasks.max" : "1",
        "database.server.name" : "servername",
        "database.hostname" : "myserver",
        "database.port" : "1521",
        "database.user" : "myuser",
        "database.password" : "mypass",
        "database.dbname" : "KAFKAPOC",
        "database.out.server.name" : "dbzxout",
        "database.history.kafka.bootstrap.servers" : "mybrokersvc:9092",
        "database.history.kafka.topic": "my-conf-topic",
        "table.include.list": "MYSCHEMA.MYTABLE",
        "database.oracle.version": 11,
        "errors.log.enable": "true"
    }
}
 

Я настроил таким образом, и некоторые темы созданы:

my-conf-topic: поставляется с таблицей DDL servername servername .MYSCHEMA.MYTABLE

В разделе «kafka-poc-dev.MYSCHEMA.MYTABLE» приведена вся информация из таблицы.

когда я запускаю плагин, вся информация успешно сохраняется! Но проблема в том, что каждая новая вставка или обновление не отображаются в теме.

Еще одна вещь, мой oracle не является версией 11, моя версия — Oracle Database 12c Enterprise Edition 12.1.0.2.0 — 64-разрядная версия, но если я не добавляю свойство «database.oracle.version»: 11, это выдает ошибку:

«org.apache.kafka.connect.errors.ConnectException: в производителе событий изменения произошло исключение. Этот соединитель будет остановлен.n tat io.debezium.pipeline.ErrorHandler.setProducerThrowable(ErrorHandler.java:42) n tat io.debezium.connector.oracle.xstream.XstreamStreamingChangeEventSource.execute(XstreamStreamingChangeEventSource.java:82)n тат ио.дебезиум.трубопровод.ChangeEventSourceCoordinator.streamEvents(ChangeEventSourceCoordinator.java:140)n tat io.debezium.pipeline.ChangeEventSourceCoordinator.lambda$start $0(ChangeEventSourceCoordinator.java:113)n tat java.base/java.util.concurrent .Исполнители $RunnableAdapter.call(Executors.java:515) n tat java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)n tat java.base/java.util.concurrent .ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)n tat d.java:834)Ncпричина: oracle.streams.StreamsExa:343) n tat io.debezium.connector.oracle.xstream.XstreamStreamingChangeEventSource.execute(XstreamStreamingChangeEventSource.java:70)nt… 7 moren»

Может кто-нибудь помочь мне понять, что я здесь делаю не так?

Теперь, когда я создаю соединитель, таблица блокируется .. и данные не поступают в разделы…

Таблица заблокирована

Спасибо!

Ответ №1:

Я столкнулся с аналогичной проблемой, но в настоящее время использую LogMiner adapter .

Первоначальный снимок и потоковая передача работают просто отлично, но я не могу получить больше событий обновления / вставки, если я добавлю больше соединителей в Kafka Connect для мониторинга разных таблиц и схем.

Все просто перестает работать, хотя я вижу, что сеансы LogMiner все еще активны.

Вы включили Golden Gate режим репликации и архивирования журнала?

Что касается database.oracle.version проблемы, с которой вы столкнулись, вам следует просто использовать значение по умолчанию, как указано здесь:

https://debezium.io/documentation/reference/connectors/oracle.html#oracle-property-database-oracle-version

 "database.oracle.version" : "12 "
 

Публикация в качестве ответа, потому что я пока не могу комментировать.

Надеюсь, это вам как-то поможет.

Ответ №2:

Вы используете версию oracle для контейнеров и PDB, поэтому вам необходимо передать database.pdb.name ценность вашей собственности. у вас должен быть пользователь с доступом logminer или Xstream.