Reputation: 15480
I'm using the WSO2 Data Services (3.5.1) Server to connect with some Oracle 12c databases. However, to support the legacy, I also need to connect to different versions like 10g and 8i.
There's the problem, using the ojdbc14.jar
driver, the datasources:
8i
works
10g
works
12c
gives: ORA-28040: No matching authentication protocol
(due the changes of SHA algorithm in the version 12)
Using the ojdbc6.jar
or ojdbc7.jar
:
10g
works
12c
works
8i
gives:
org.wso2.carbon.ndatasource.common.DataSourceException: Error establishing data source connection: 4
...
Caused by: java.sql.SQLException: 4
at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:290)
at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:182)
at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:702)
...
Caused by: java.lang.ArrayIndexOutOfBoundsException: 4
at oracle.jdbc.driver.T4C8TTIdty.<init>(T4C8TTIdty.java:491)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1434)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:486)
...
Searching for solution, I've found some alternative, by setting the parameter SQLNET.ALLOWED_LOGON_VERSION=8
in the oracle/network/admin/sqlnet.ora file in the 12c database and using ojdbc14.jar
, but due infrastructure restrictions, this approach is not acceptable.
I would like to know if there's a way to use simultaneously both drivers in DSS, maybe specifying some custom Java class extending the different OracleDriver
class, and configuring the DSS class loader... or some different solution.
Any help would be appreciated.
Upvotes: 2
Views: 424
Reputation: 511
This is a known backward compatibility limitation1, 2 in oracle drivers and there's no solution in wso2 DSS as a workaround. This has clearly stated in Oracle version compatibility matrix.
Have you tried different versions of older ojdbc drivers which might work on both oracle versions(eg: oracle driver 10). Of cause not all the features might work, but you might end up with connecting to all the databases and execute basics without issue.
Upvotes: 1