elias
elias

Reputation: 15480

DSS cannot connect to different Oracle database versions

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

Answers (1)

plr
plr

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

Related Questions