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

Oracle fails to reselect columns when table structure changes and throws ORA-01466

XMLWordPrintable

    • Important

      Hello all.

      We use a standalone server with a iceberg sink.

      We have a reselect postprocessor turned on.

      Sometimes we have following warnings  in our logs

      *********

       WARN  [io.deb.pro.res.ReselectColumnsPostProcessor] (debezium-oracleconnector-TX-change-event-source-coordinator) Failed to re-select columns for table TXR.TX.TR and key [250814]: java.sql.SQLException: ORA-01466: unable to read data - table definition has changed
      debezium-1  |
      debezium-1  | https://docs.oracle.com/error-help/db/ora-01466/
      debezium-1  |   at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:709)
      debezium-1  |   at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:609)
      debezium-1  |   at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1347)
      debezium-1  |   at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:1100)
      debezium-1  |   at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:408)
      debezium-1  |   at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:499)
      debezium-1  |   at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:274)
      debezium-1  |   at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:1231)
      debezium-1  |   at oracle.jdbc.driver.OracleStatement.prepareDefineBufferAndExecute(OracleStatement.java:1412)
      debezium-1  |   at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1286)
      debezium-1  |   at oracle.jdbc.driver.OracleStatement.executeSQLSelect(OracleStatement.java:1843)
      debezium-1  |   at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1619)
      debezium-1  |   at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3955)
      debezium-1  |   at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:4142)
      debezium-1  |   at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1103)
      debezium-1  |   at io.debezium.jdbc.JdbcConnection.prepareQuery(JdbcConnection.java:808)
      debezium-1  |   at io.debezium.jdbc.JdbcConnection.reselectColumns(JdbcConnection.java:1672)
      debezium-1  |   at io.debezium.connector.oracle.OracleConnection.reselectColumns(OracleConnection.java:666)
      debezium-1  |   at io.debezium.processors.reselect.ReselectColumnsPostProcessor.apply(ReselectColumnsPostProcessor.java:223)
      debezium-1  |   at io.debezium.pipeline.EventDispatcher.doPostProcessing(EventDispatcher.java:762)
      debezium-1  |   at io.debezium.pipeline.EventDispatcher$StreamingChangeRecordReceiver.changeRecord(EventDispatcher.java:521)
      debezium-1  |   at io.debezium.pipeline.EventDispatcher$2.changeRecord(EventDispatcher.java:311)
      debezium-1  |   at io.debezium.relational.RelationalChangeRecordEmitter.emitUpdateRecord(RelationalChangeRecordEmitter.java:124)

       

      *********

      In that case we think that there were some maintainance procedures with Database, and additional tablespaces were added.

      That procedure is regular and we have to make it evety day.

      After these warnings we check the sink and noticed that  our reselected columns were no filled  with correct data  (there was sentitel value instead of actual data)

      Can you help us to avoid that situation

      Thanks

       

       

              ccranfor@redhat.com Chris Cranford
              nickolay.k Nikolay Kozlov
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: