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

The presence of "_" in the ORACLE table name caused the cdc to fail

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • 3.2.0.CR1
    • None
    • oracle-connector
    • None
    • Important

      In order to make your issue reports as actionable as possible, please provide the following information, depending on the issue type.

      Bug report

      For bug reports, provide this information, please:

      What Debezium connector do you use and what version?

       
      debezium-connector-oracle   3.2.0.Beta2

      What is the connector configuration?

      Map<String, String> props = new HashMap<>();
      props.put("connector.class","io.debezium.connector.oracle.OracleConnector");
      props.put("tasks.max","1");
      // 内存存储schema
      props.put("schema.history.internal","io.debezium.relational.history.MemorySchemaHistory");
      
      props.put("transforms.unwrap.delete.handling.mode","drop");
      props.put("log.mining.transaction.retention.hours","2");
      
      props.put("unavailable.value.placeholder","NA");
      // LOB开关
      props.put("lob.enabled","false");
      props.put("log.mining.strategy","hybrid");
      props.put("topic.prefix","G_D_C");
      props.put("decimal.handling.mode","precise");
      // DDL解析不了不要报错终止任务
      props.put("database.history.skip.unparseable.ddl","true");
      props.put("errors.max.retries","3");
      
      props.put("time.precision.mode","connect");
      props.put("database.server.name","task1_1553_server");
      props.put("event.processing.failure.handling.mode","warn");
      props.put("heartbeat.interval.ms","1000");
      props.put("database.ssl.mode","disabled");
      props.put("log.mining.batch.size.default", "30000");
      
      props.put("snapshotSchema","true");
      props.put("snapshot.mode","schema_only");
      
      props.put("database.sidSeparator","/");
      props.put("database.hostname","10.69.66.75");
      props.put("database.port","8314");
      props.put("database.dbname","helowin");
      props.put("database.user","system");
      props.put("database.password","system");
      props.put("schema.include.list","TEST");
      props.put("table.include.list","TEST.A_TEST");
      
      // 基于配置的snapshoter
      props.put("snapshot.mode.custom.name","custom");
      // 禁止锁表
      props.put("snapshot.locking.mode", "none");
      props.put("snapshot.mode.configuration.based.snapshot.schema","true");
      // 只对需要捕获的表进行结构加载
      props.put("schema.history.internal.store.only.captured.tables.ddl", "true");
      // 事务查询模式
      props.put("log.mining.query.filter.mode", "in");
      // 事务缓存模式 memory infinispan_embedded
      props.put("log.mining.buffer.type","memory");
      
      

      What is the captured database version and mode of deployment?

      (E.g. on-premises, with a specific cloud provider, etc.)

      Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production. 

      deployed on a virtual machine

      What behavior do you expect?

      It's running well when capture table.

      What behavior do you see?

      when we try to capture TEST.A_TEST, connector throws a exception. 

      io.debezium.DebeziumException: Unable to find relational table model for 'HELOWIN.TEST.A_TEST', there may be an issue with your include/exclude list configuration.
          at io.debezium.relational.RelationalSnapshotChangeEventSource.createSchemaChangeEventsForTables(RelationalSnapshotChangeEventSource.java:439)
          at io.debezium.relational.RelationalSnapshotChangeEventSource.doExecute(RelationalSnapshotChangeEventSource.java:168)
          at io.debezium.pipeline.source.AbstractSnapshotChangeEventSource.execute(AbstractSnapshotChangeEventSource.java:96)
          at io.debezium.pipeline.ChangeEventSourceCoordinator.doSnapshot(ChangeEventSourceCoordinator.java:299)
          at io.debezium.pipeline.ChangeEventSourceCoordinator.doSnapshot(ChangeEventSourceCoordinator.java:283)
          at io.debezium.pipeline.ChangeEventSourceCoordinator.executeChangeEventSources(ChangeEventSourceCoordinator.java:197)
          at io.debezium.pipeline.ChangeEventSourceCoordinator.lambda$start$0(ChangeEventSourceCoordinator.java:148)
          at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
          at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
          at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
          at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
          at java.base/java.lang.Thread.run(Thread.java:842) 

       

      Do you see the same behaviour using the latest released Debezium version?

      (Ideally, also verify with latest Alpha/Beta/CR version)

      It's ok in 2.6.1.Final  verison.

      Do you have the connector logs, ideally from start till finish?

      (You might be asked later to provide DEBUG/TRACE level log)

      The same as above.

      How to reproduce the issue using our tutorial deployment?

      capture a table name contines "_"

      Feature request or enhancement

      For feature requests or enhancements, provide this information, please:

      Which use case/requirement will be addressed by the proposed feature?

      <Your answer>

      Implementation ideas (optional)

      io.debezium.jdbc.JdbcConnection#getLikeWildcardCharacters

      remove the char "_" from the result. Or overwrite this method in io.debezium.connector.oracle.OracleConnection. And remove this char in submethod.

              Unassigned Unassigned
              williamxww xiang vv (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: