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

Improve NLS character set support by including orai18n dependency

XMLWordPrintable

    • Icon: Enhancement Enhancement
    • Resolution: Done
    • Icon: Major Major
    • 2.7.0.Alpha1
    • 2.6.0.CR1, 2.6.0.Final
    • oracle-connector
    • None

      Bug report

      For bug reports, provide this information, please:

      What Debezium connector do you use and what version?

      2.6.0.CR1, 2.6.0.Final

      What is the connector configuration?

      {
        "name":"source1",
        "config":  {
          "name":"source1",
          "tasks.max" : "1", 
          "connector.class" : "io.debezium.connector.oracle.OracleConnector", 
          "database.url" : "jdbc:oracle:thin:@DATABASE:1521:INSTANCE",
          "database.user" : "user",  
          "database.password" : "pswd",
          "database.dbname": "DATABASENAME",
          "lob.enabled": "true",
          "database.connection.adapter": "logminer",
          "snapshot.mode": "schema_only",
          "snapshot.locking.mode": "none",
          "include.schema.changes": "false",
          "errors.max.retries": 3,
       
          "producer.override.buffer.memory": 104857600,
          "producer.override.max.request.size": 104857600,
       
          "time.precision.mode": "connect",
          "decimal.handling.mode": "precise",
          "incremental.snapshot.chunk.size": 50000,
          "column.propagate.source.type": ".*",
       
          "log.mining.archive.log.hours": 24,
          "log.mining.archive.log.only.mode": "false",
          "log.mining.session.max.ms": 7200000,
          "log.mining.restart.connection": "false",   
       
      ...
        }
      }

      What is the captured database version and mode of depoyment?

      Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
      Version 19.18.0.0.0, on-prem

      Result of

      select * from nls_database_parameters

      :

      NLS_RDBMS_VERSION    19.0.0.0.0
      NLS_NCHAR_CONV_EXCP    FALSE
      NLS_LENGTH_SEMANTICS    BYTE
      NLS_COMP    BINARY
      NLS_DUAL_CURRENCY    ?
      NLS_TIMESTAMP_TZ_FORMAT    DD.MM.RR HH24:MI:SSXFF TZR
      NLS_TIME_TZ_FORMAT    HH24:MI:SSXFF TZR
      NLS_TIMESTAMP_FORMAT    DD.MM.RR HH24:MI:SSXFF
      NLS_TIME_FORMAT    HH24:MI:SSXFF
      NLS_SORT    BINARY
      NLS_DATE_LANGUAGE    AMERICAN
      NLS_DATE_FORMAT    DD.MM.RR
      NLS_CALENDAR    GREGORIAN
      NLS_NUMERIC_CHARACTERS    , 
      NLS_NCHAR_CHARACTERSET    AL16UTF16
      NLS_CHARACTERSET    CL8MSWIN1251
      NLS_ISO_CURRENCY    RUSSIA
      NLS_CURRENCY    ?
      NLS_LANGUAGE    AMERICAN

      What behaviour do you expect?

      Normal work of connector

      What behaviour do you see?

      Error "Caused by: java.sql.SQLException: Non supported character set (add orai18n.jar in your classpath): CL8MSWIN1251" make connector fail

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

      I see this error only in 2.6.0.CR1 and 2.6.0.Final. 2.6.0.Beta1 just working fine.

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

      2024-04-08 14:00:35,912 ERROR  ||  WorkerSourceTask{id=kiasdb10-source1-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]
      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:67)
          at io.debezium.connector.oracle.logminer.LogMinerStreamingChangeEventSource.execute(LogMinerStreamingChangeEventSource.java:267)
          at io.debezium.connector.oracle.logminer.LogMinerStreamingChangeEventSource.execute(LogMinerStreamingChangeEventSource.java:61)
          at io.debezium.pipeline.ChangeEventSourceCoordinator.streamEvents(ChangeEventSourceCoordinator.java:280)
          at io.debezium.pipeline.ChangeEventSourceCoordinator.executeChangeEventSources(ChangeEventSourceCoordinator.java:197)
          at io.debezium.pipeline.ChangeEventSourceCoordinator.lambda$start$0(ChangeEventSourceCoordinator.java:140)
          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:829)
      Caused by: io.debezium.DebeziumException: Failed to read the Oracle database redo thread state
          at io.debezium.connector.oracle.OracleConnection.getRedoThreadState(OracleConnection.java:822)
          at io.debezium.connector.oracle.logminer.LogFileCollector.getLogs(LogFileCollector.java:80)
          at io.debezium.connector.oracle.logminer.LogMinerStreamingChangeEventSource.initializeRedoLogsForMining(LogMinerStreamingChangeEventSource.java:402)
          at io.debezium.connector.oracle.logminer.LogMinerStreamingChangeEventSource.execute(LogMinerStreamingChangeEventSource.java:178)
          ... 9 more
      Caused by: java.sql.SQLException: Non supported character set (add orai18n.jar in your classpath): CL8MSWIN1251
          at oracle.sql.CharacterSetUnknown.failCharsetUnknown(CharacterSetFactoryThin.java:240)
          at oracle.sql.CharacterSetUnknown.convert(CharacterSetFactoryThin.java:201)
          at oracle.jdbc.driver.PhysicalConnection.throughDbCharset(PhysicalConnection.java:11078)
          at oracle.jdbc.driver.PhysicalConnection.enquoteIdentifier(PhysicalConnection.java:11158)
          at oracle.jdbc.driver.OracleStatement.enquoteIdentifier(OracleStatement.java:6788)
          at oracle.jdbc.driver.OracleStatement.getColumnIndex(OracleStatement.java:4211)
          at oracle.jdbc.driver.InsensitiveScrollableResultSet.findColumn(InsensitiveScrollableResultSet.java:299)
          at oracle.jdbc.driver.GeneratedResultSet.getInt(GeneratedResultSet.java:622)
          at io.debezium.connector.oracle.OracleConnection.lambda$getRedoThreadState$35(OracleConnection.java:791)
          at io.debezium.jdbc.JdbcConnection.queryAndMap(JdbcConnection.java:646)
          at io.debezium.jdbc.JdbcConnection.queryAndMap(JdbcConnection.java:514)
          at io.debezium.connector.oracle.OracleConnection.getRedoThreadState(OracleConnection.java:787)
          ... 12 more

      How to reproduce the issue using our tutorial deployment?

      Deploy connector.

              ccranfor@redhat.com Chris Cranford
              sberbanker Al Fes
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

                Created:
                Updated:
                Resolved: