【发布时间】:2022-07-20 15:14:45
【问题描述】:
我正在使用 debezium 连接到 Oracle 数据库版本 19c。遵循 debezium examples repository 并使用 docker-compose 脚本。 为了让它工作,我不得不修改 debezium-with-oracle-jdbc 的 Dockerfile。您可以在this repository 找到我的更改以供复制。
到问题:
连接数据库时出现以下异常。最初的步骤似乎成功了,但我假设在恢复模式时,连接器崩溃了。我在代码中找到了该位置,但我无法判断这是数据库问题还是从 debezium 连接到 kafka 的问题。崩溃线可以在here找到。
我读过here,通常应该在崩溃阶段打印表模式。也许 DB 用户缺少特权?我找不到连接数据库用户必须拥有哪些权限。
connect_1 | 2021-11-23 15:08:44,773 INFO Oracle|server1|snapshot Metrics registered [io.debezium.pipeline.ChangeEventSourceCoordinator]
connect_1 | 2021-11-23 15:08:44,773 INFO Oracle|server1|snapshot Context created [io.debezium.pipeline.ChangeEventSourceCoordinator]
connect_1 | 2021-11-23 15:08:44,776 INFO Oracle|server1|snapshot No previous offset has been found. [io.debezium.connector.oracle.OracleSnapshotChangeEventSource]
connect_1 | 2021-11-23 15:08:44,776 INFO Oracle|server1|snapshot According to the connector configuration only schema will be snapshot. [io.debezium.connector.oracle.OracleSnapshotChangeEventSource]
connect_1 | 2021-11-23 15:08:44,777 INFO Oracle|server1|snapshot Snapshot step 1 - Preparing [io.debezium.relational.RelationalSnapshotChangeEventSource]
connect_1 | 2021-11-23 15:08:44,777 INFO Oracle|server1|snapshot Snapshot step 2 - Determining captured tables [io.debezium.relational.RelationalSnapshotChangeEventSource]
connect_1 | 2021-11-23 15:08:55,141 INFO Oracle|server1|snapshot Snapshot step 3 - Locking captured tables [<Disclosed, but found 323 tables in total>] [io.debezium.relational.RelationalSnapshotChangeEventSource]
connect_1 | 2021-11-23 15:09:11,187 INFO Oracle|server1|snapshot Snapshot step 4 - Determining snapshot offset [io.debezium.relational.RelationalSnapshotChangeEventSource]
connect_1 | 2021-11-23 15:09:12,023 INFO Oracle|server1|snapshot Snapshot step 5 - Reading structure of captured tables [io.debezium.relational.RelationalSnapshotChangeEventSource]
connect_1 | 2021-11-23 15:09:43,928 INFO || WorkerSourceTask{id=inventory-connector-0} flushing 0 outstanding messages for offset commit [org.apache.kafka.connect.runtime.WorkerSourceTask]
connect_1 | 2021-11-23 15:09:53,390 INFO Oracle|server1|snapshot Snapshot step 6 - Persisting schema history [io.debezium.relational.RelationalSnapshotChangeEventSource]
connect_1 | 2021-11-23 15:09:53,438 INFO Oracle|server1|snapshot Snapshot - Final stage [io.debezium.pipeline.source.AbstractSnapshotChangeEventSource]
connect_1 | 2021-11-23 15:09:53,439 ERROR Oracle|server1|snapshot Producer failure [io.debezium.pipeline.ErrorHandler]
connect_1 | io.debezium.DebeziumException: java.lang.NullPointerException
connect_1 | at io.debezium.pipeline.source.AbstractSnapshotChangeEventSource.execute(AbstractSnapshotChangeEventSource.java:80)
connect_1 | at io.debezium.pipeline.ChangeEventSourceCoordinator.lambda$start$0(ChangeEventSourceCoordinator.java:118)
connect_1 | at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
connect_1 | at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
connect_1 | at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
connect_1 | at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
connect_1 | at java.base/java.lang.Thread.run(Thread.java:829)
connect_1 | Caused by: java.lang.NullPointerException
connect_1 | at io.debezium.relational.RelationalSnapshotChangeEventSource.createSchemaChangeEventsForTables(RelationalSnapshotChangeEventSource.java:277)
connect_1 | at io.debezium.relational.RelationalSnapshotChangeEventSource.doExecute(RelationalSnapshotChangeEventSource.java:124)
connect_1 | at io.debezium.pipeline.source.AbstractSnapshotChangeEventSource.execute(AbstractSnapshotChangeEventSource.java:71)
connect_1 | ... 6 more
connect_1 | 2021-11-23 15:09:53,445 INFO Oracle|server1|snapshot Connected metrics set to 'false' [io.debezium.pipeline.metrics.StreamingChangeEventSourceMetrics]
connect_1 | 2021-11-23 15:09:53,909 INFO || WorkerSourceTask{id=inventory-connector-0} flushing 0 outstanding messages for offset commit [org.apache.kafka.connect.runtime.WorkerSourceTask]
connect_1 | 2021-11-23 15:09:53,910 ERROR || WorkerSourceTask{id=inventory-connector-0} Task threw an uncaught and unrecoverable exception. Task is being killed and will not recover until manually restarted [org.apache.kafka.connect.runtime.WorkerTask]
connect_1 | org.apache.kafka.connect.errors.ConnectException: An exception occurred in the change event producer. This connector will be stopped.
connect_1 | at io.debezium.pipeline.ErrorHandler.setProducerThrowable(ErrorHandler.java:42)
connect_1 | at io.debezium.pipeline.ChangeEventSourceCoordinator.lambda$start$0(ChangeEventSourceCoordinator.java:135)
connect_1 | at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
connect_1 | at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
connect_1 | at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
connect_1 | at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
connect_1 | at java.base/java.lang.Thread.run(Thread.java:829)
connect_1 | Caused by: io.debezium.DebeziumException: java.lang.NullPointerException
connect_1 | at io.debezium.pipeline.source.AbstractSnapshotChangeEventSource.execute(AbstractSnapshotChangeEventSource.java:80)
connect_1 | at io.debezium.pipeline.ChangeEventSourceCoordinator.lambda$start$0(ChangeEventSourceCoordinator.java:118)
connect_1 | ... 5 more
connect_1 | Caused by: java.lang.NullPointerException
connect_1 | at io.debezium.relational.RelationalSnapshotChangeEventSource.createSchemaChangeEventsForTables(RelationalSnapshotChangeEventSource.java:277)
connect_1 | at io.debezium.relational.RelationalSnapshotChangeEventSource.doExecute(RelationalSnapshotChangeEventSource.java:124)
connect_1 | at io.debezium.pipeline.source.AbstractSnapshotChangeEventSource.execute(AbstractSnapshotChangeEventSource.java:71)
connect_1 | ... 6 more
connect_1 | 2021-11-23 15:09:53,911 INFO || Stopping down connector [io.debezium.connector.common.BaseSourceTask]
【问题讨论】:
-
您使用的是什么版本的连接器?
-
您好 Naros,感谢您的调查。我使用的是 DEBEZIUM_VERSION=1.7,因此下载的图像是 debezium/connect-with-oracle-jdbc:1.7,如复制代码中所述。
-
请尝试 1.8,如果仍然有问题,请告诉我。如果是这样,您可能希望在问题中分享您的连接器配置,以便我们确定是否存在其他问题。
标签: oracle apache-kafka debezium