Hi,
we have upgraded from LPM OJDBC8 drivers to OJDBC 11, but after an update, Liquibase complains about a missing orai18n.jar, because our DB is using an Eastern European character set. However, when we were running a pure OJDBC8 drivers from LPM, this was never an issue. To my knowledge, there shouldn’t be any changes between OJDBC 8 and 11 in this regard.
We are using following Dockerfile section:
RUN lpm update
RUN lpm add oracle-ojdbc8 --global
USER root
RUN apt-get update && apt-get install -y apt-utils && apt-get upgrade -y && apt-get install -y curl jq openssh-client
And we have simply switched the LPM package to ojdbc11
RUN lpm update
RUN lpm add oracle-ojdbc11 --global
USER root
RUN apt-get update && apt-get install -y apt-utils && apt-get upgrade -y && apt-get install -y curl jq openssh-client
However, then the DB returns an ORA-17056 error. Here is a Liquibase log:
Starting Liquibase at 20:34:28 using Java 21.0.11 (version 5.0.3 #10665 built at 2026-05-13 17:55+0000)
Liquibase Version: 5.0.3
WARNING:
Liquibase detected the following invalid Community LIQUIBASE_* environment variables:
- LIQUIBASE_IMAGE_NAME
- LIQUIBASE_IMAGE_TAG
Find the list of valid environment variables at Pro 4.33: What are Liquibase environment variables?
ERROR: Exception Details
ERROR: Exception Primary Class: SQLException
ERROR: Exception Primary Reason: ORA-17056: Non-supported character set (add orai18n.jar in the classpath): EE8ISO8859P2
ERROR: Exception Primary Source: 5.0.3
Unexpected error running Liquibase: Connection could not be created to jdbc:oracle:thin:@oradbp-scan.server.cetin:1535/ZISP with driver oracle.jdbc.OracleDriver. ORA-17056: Non-supported character set (add orai18n.jar in the classpath): EE8ISO8859P2
And we are calling Liquibase like this:
liquibase --changelog-file "../../dbchangelog.xml" --log-file "../../../reports/${f}.log" --username=${oracle_user} --password=${oracle_pasword} --url jdbc:oracle:thin:@${ORACLE_SERVER}:${ORACLE_PORT}/${ORACLE_SERVICE} --logLevel=INFO update -Duser.timezone="Europe/Prague"
The only thing we had to do, is to add a dynamic orai18n.jar file download based on the Oracle driver version from the LPM package:
RUN OJDBC_JAR=$(ls /liquibase/lib/ojdbc11-*.jar) && \
OJDBC_VERSION=$(basename "$OJDBC_JAR" | sed -E 's/ojdbc11-(.*)\.jar/\1/') && \
echo "Matching orai18n.jar to installed ojdbc11 version: ${OJDBC_VERSION}" && \
curl -fL -o /liquibase/lib/orai18n.jar "https://repo1.maven.org/maven2/com/oracle/database/nls/orai18n/${OJDBC_VERSION}/orai18n-${OJDBC_VERSION}.jar" && \
chmod 644 /liquibase/lib/orai18n.jar
However, I don’t understand, why this change was not necessary with OJDBC 8. Any ideas? From what Google is telling me, there shouldn’t be any difference between them in this area.