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

After the Oracle connector is stopped, a bug occurs in the SCN reading function after the next startup

XMLWordPrintable

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

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

      <1.7.2.final>

      什么是连接器配置?

      <oracle>

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

      <oracle 11g ,local>

      你看到什么行为?

      <

      Now, we have tested such a scenario. We use Oracle connector to monitor a table. After the snapshot completes, we terminate the connector. Then we modify the row data in the table. The sequence is as follows: first change a row of data (add, delete and modify any DML statement), and then change the table structure. For example, modify the field name (alter table rename), and then modify a row of data (update table set columnname =? Where). At this point, starting the Oracle connector will report an error,

      We debugged the source code of debezium and found that from $logmnr_ Contents table query SQL_ The redo field contains such SQL "update" inmon " A "set" col 5 "= hextoraw ('80') where" col 1 "= hextoraw ('33') and" col 2 "= hextoraw ('33') and" col 3 "= hextoraw ('c104') and" col 4 "= hextoraw ('c104') and" col 5 "= hextoraw ('c20743')" in fact, there are no such columns in my table "a", which seems to be caused by a problem when logminer dictionary converts the sequence numbers of these columns into field names, But the problem with debezium is: "after resolving to the field name in io/debezium/connector/oracle/logminer/parser/logminerdmlparser.java:408, it will look for the existence of the column in the tower: io/debezium/connector/oracle/logminer/logminerhelper.java:222, and throw a new debeziumexception (" no column '+ columnname ' "found in table ' table.id() +");

      >

      您在使用最新发布的 Debezium 版本时是否看到相同的行为?

      (理想情况下,还可以使用最新的 Alpha/Beta/CR 版本进行验证)

      <Not tested>

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

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

      <2022-06-02 11:37:42,170 ERROR [io.deb.pip.ErrorHandler] (debezium-oracleconnector-ora_edw_inmon_server01-change-event-source-coordinator) Producer failure: io.debezium.connector.oracle.logminer.parser.DmlParserException: DML statement couldn't be parsed. Please open a Jira issue with the statement 'update "INMON"."A" set "COL 5" = HEXTORAW('c2020c') where "COL 1" = HEXTORAW('33') and "COL 2" = HEXTORAW('33') and "COL 3" = HEXTORAW('c104') and "COL 4" = HEXTORAW('c104') and "COL 5" = HEXTORAW('80') and "DBZID" = AAAf3WAAAAANGJXAAA;'.
          at io.debezium.connector.oracle.logminer.processor.AbstractLogMinerEventProcessor.parseDmlStatement(AbstractLogMinerEventProcessor.java:636)
          at io.debezium.connector.oracle.logminer.processor.AbstractLogMinerEventProcessor.lambda$handleDataEvent$3(AbstractLogMinerEventProcessor.java:448)
          at io.debezium.connector.oracle.logminer.processor.memory.MemoryLogMinerEventProcessor.addToTransaction(MemoryLogMinerEventProcessor.java:367)
          at io.debezium.connector.oracle.logminer.processor.AbstractLogMinerEventProcessor.handleDataEvent(AbstractLogMinerEventProcessor.java:427)
          at io.debezium.connector.oracle.logminer.processor.AbstractLogMinerEventProcessor.processRow(AbstractLogMinerEventProcessor.java:220)
          at io.debezium.connector.oracle.logminer.processor.AbstractLogMinerEventProcessor.processResults(AbstractLogMinerEventProcessor.java:178)
          at io.debezium.connector.oracle.logminer.processor.memory.MemoryLogMinerEventProcessor.process(MemoryLogMinerEventProcessor.java:134)
          at io.debezium.connector.oracle.logminer.LogMinerStreamingChangeEventSource.execute(LogMinerStreamingChangeEventSource.java:169)
          at io.debezium.connector.oracle.logminer.LogMinerStreamingChangeEventSource.execute(LogMinerStreamingChangeEventSource.java:58)
          at io.debezium.pipeline.ChangeEventSourceCoordinator.streamEvents(ChangeEventSourceCoordinator.java:166)
          at io.debezium.pipeline.ChangeEventSourceCoordinator.lambda$start$0(ChangeEventSourceCoordinator.java:127)
          at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
          at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:264)
          at java.base/java.util.concurrent.FutureTask.run(FutureTask.java)
          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.connector.oracle.logminer.parser.DmlParserException: Failed to parse update DML: 'update "INMON"."A" set "COL 5" = HEXTORAW('c2020c') where "COL 1" = HEXTORAW('33') and "COL 2" = HEXTORAW('33') and "COL 3" = HEXTORAW('c104') and "COL 4" = HEXTORAW('c104') and "COL 5" = HEXTORAW('80') and "DBZID" = AAAf3WAAAAANGJXAAA;'
          at io.debezium.connector.oracle.logminer.parser.LogMinerDmlParser.parseUpdate(LogMinerDmlParser.java:167)
          at io.debezium.connector.oracle.logminer.parser.LogMinerDmlParser.parse(LogMinerDmlParser.java:81)
          at io.debezium.connector.oracle.logminer.processor.AbstractLogMinerEventProcessor.parseDmlStatement(AbstractLogMinerEventProcessor.java:630)
          ... 16 more
      Caused by: io.debezium.DebeziumException: No column 'COL 5' found in table 'EDW.INMON.A'
          at io.debezium.connector.oracle.logminer.LogMinerHelper.getColumnIndexByName(LogMinerHelper.java:225)
          at io.debezium.connector.oracle.logminer.parser.LogMinerDmlParser.parseSetClause(LogMinerDmlParser.java:460)
          at io.debezium.connector.oracle.logminer.parser.LogMinerDmlParser.parseUpdate(LogMinerDmlParser.java:136)
          ... 18 more>

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

      <idea running debezium-server, But I think other deployment methods will also have such problems, because this involves logminer itself>

      提议的功能将解决哪个用例/需求?

      <>

      实施思路(可选)

      <
      >

              ccranfor@redhat.com Chris Cranford
              ryan-0526 逸南 丁 (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: