Uploaded image for project: 'Debezium'
  1. Debezium
  2. DBZ-5215

io.debezium.DebeziumException: Oracle failed to re-construct redo SQL

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: Major Major
    • None
    • 1.9.3.Final
    • oracle-connector
    • None
    • False
    • None
    • False

      为了使您的问题报告尽可能可行,请根据问题类型提供以下信息。

      错误报告

      对于错误报告,请提供此信息:

      你使用什么 Debezium 连接器,什么版本?

      <1.9.3.final>

      什么是连接器配置?

      <oracle-connector>

      捕获的数据库版本和部署模式是什么?

      (例如在本地、使用特定的云提供商等)

      <oracle11g,debezium-server, idea local>

      你看到什么行为?

      <I tested the scenarios in  DBZ-5186   in version 1.9.3, but still encountered problems. In version 1.7, it is io/debezium/connector/oracle/logminer/logminerhelper Java:228 parsing error. The solution in version 1.9 is: io/debezium/connector/oracle/logminer/processor/abstractlogminereventprocessor Java:727, getting redo_ If the SQL and DML statements are invalid, an exception will be thrown. However, there are two problems: first, if an exception is thrown, it means that the connector will always fail to start no matter how many times it is started, because SCN will not change. Second, we use the logminer tool to observe: "update" inmon. " A "set" col 5 "= hextoraw ('c104') where" col 1 "= hextoraw ('33') and" col 2 "= hextoraw ('3333') and" col 3 "= hextoraw ('c122') and" col 4 "= hextoraw ('c122') and" col 5 "= hextoraw ('c103')" such an SQL is not an invalid SQL, it is the normal data we modify, but logminer does not know the reason and does not dictionary convert the column number and value. If debezium ignores this data for, There will be data loss>

      您是否有连接器日志,最好是从开始到结束?

      (稍后可能会要求您提供DEBUG/TRACE级别的日志)

      <2022-06-07 14:59:34,761 INFO  [org.apa.kaf.con.sto.FileOffsetBackingStore] (pool-11-thread-1) Stopped FileOffsetBackingStore
      2022-06-07 14:59:34,761 INFO  [io.deb.ser.ConnectorLifecycle] (pool-11-thread-1) Connector completed: success = 'false', message = 'Error while trying to run connector class 'io.debezium.connector.oracle.OracleConnector'', error = '{}': org.apache.kafka.connect.errors.ConnectException: An exception occurred in the change event producer. This connector will be stopped.
          at io.debezium.pipeline.ErrorHandler.setProducerThrowable(ErrorHandler.java:50)
          at io.debezium.connector.oracle.logminer.LogMinerStreamingChangeEventSource.execute(LogMinerStreamingChangeEventSource.java:222)
          at io.debezium.connector.oracle.logminer.LogMinerStreamingChangeEventSource.execute(LogMinerStreamingChangeEventSource.java:60)
          at io.debezium.pipeline.ChangeEventSourceCoordinator.streamEvents(ChangeEventSourceCoordinator.java:174)
          at io.debezium.pipeline.ChangeEventSourceCoordinator.executeChangeEventSources(ChangeEventSourceCoordinator.java:141)
          at io.debezium.pipeline.ChangeEventSourceCoordinator.lambda$start$0(ChangeEventSourceCoordinator.java:109)
          at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
          at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
          at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
          at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
          at java.base/java.lang.Thread.run(Thread.java:834)
      Caused by: io.debezium.DebeziumException: Oracle failed to re-construct redo SQL 'update "INMON"."A" set "COL 5" = HEXTORAW('c104') where "COL 1" = HEXTORAW('33') and "COL 2" = HEXTORAW('3333') and "COL 3" = HEXTORAW('c122') and "COL 4" = HEXTORAW('c122') and "COL 5" = HEXTORAW('c103');'
          at io.debezium.connector.oracle.logminer.processor.AbstractLogMinerEventProcessor.handleDataEvent(AbstractLogMinerEventProcessor.java:732)
          at io.debezium.connector.oracle.logminer.processor.AbstractLogMinerEventProcessor.processRow(AbstractLogMinerEventProcessor.java:294)
          at io.debezium.connector.oracle.logminer.processor.AbstractLogMinerEventProcessor.processResults(AbstractLogMinerEventProcessor.java:244)
          at io.debezium.connector.oracle.logminer.processor.AbstractLogMinerEventProcessor.process(AbstractLogMinerEventProcessor.java:190)
          at io.debezium.connector.oracle.logminer.LogMinerStreamingChangeEventSource.execute(LogMinerStreamingChangeEventSource.java:210)
          ... 9 more>

      如何使用我们的教程部署重现问题?

      <I think this problem will recur no matter which deployment method is used, that is, use debezium to monitor any Oracle test table, wait for the snapshot to complete, stop the connector, then issue any DML statement (add, delete and modify) in the table, and then modify the table structure, such as modifying the field name, and then issue a DML statement to restart the connector. This error will be received>

              Unassigned Unassigned
              ryan-0526 逸南 丁 (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: