According to interoperability matrix (Doc ID 207303.1) client version 19 and 21 are compatible with server 23.
When running this java snippet with different ojdbc versions, we get inconsistent metadata:
OracleConnection conn = (OracleConnection) DriverManager.getConnection(url, user, password);
DatabaseMetaData dbmd = conn.getMetaData();
System.out.format("Driver major version: %d%n", dbmd.getDriverMajorVersion());
System.out.format("Driver minor version: %d%n", dbmd.getDriverMinorVersion());
System.out.format("Database major version: %d%n", dbmd.getDatabaseMajorVersion());
System.out.format("Database minor version: %d%n", dbmd.getDatabaseMinorVersion());
System.out.format("Database version number: %d%n", conn.getVersionNumber());
Using sql*plus we get this info:
$ sqlplus / as sysdba
SQL*Plus: Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems on Wed Jun 4 16:08:24 2025
Version 23.5.0.24.07
Copyright (c) 1982, 2024, Oracle. All rights reserved.
Connected to:
Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
Version 23.5.0.24.07
When running with ojdbc 19.27.0.0
we get:
Driver major version: 19
Driver minor version: 27
Database major version: 23
Database minor version: 0
Database version number: 23001
When running with ojdbc 21.18.0.0
we get:
Driver major version: 21
Driver minor version: 18
Database major version: 23
Database minor version: 0
Database version number: 23000
When running with ojdbc 23.8.0.25.04
we get:
Driver major version: 23
Driver minor version: 8
Database major version: 23
Database minor version: 5
Database version number: 23000
As you can see minor version and version number are not consistent.