DSS无法连接到不同的Oracle数据库版本

时间:2016-09-27 14:20:52

标签: wso2 oracle12c wso2dss oracle8i

我正在使用WSO2数据服务(3.5.1)服务器连接某些Oracle 12c数据库。但是,为了支持遗产,我还需要连接到不同的版本,如10g和8i。

使用ojdbc14.jar驱动程序,数据源有问题:
8i的作品 10g的作品 12c给出:ORA-28040: No matching authentication protocol(由于版本12中SHA算法的更改)

使用ojdbc6.jarojdbc7.jar
10g的作品 12c的作品 8i给出:

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)
...

通过在12c数据库中的oracle / network / admin / sqlnet.ora文件中设置参数SQLNET.ALLOWED_LOGON_VERSION=8并使用ojdbc14.jar,我找到了一些替代方案限制,这种方法是不可接受的。

我想知道是否有一种方法可以同时使用DSS中的两个驱动程序,可能指定一些扩展不同OracleDriver类的自定义Java类,以及配置DSS类加载器......或某些不同的解决方案。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

这是oracle驱动程序中已知的向后兼容性限制12,并且wso2 DSS中没有解决方案作为解决方法。这已在Oracle version compatibility matrix中明确说明。

您是否尝试过不同版本的旧版ojdbc驱动程序,这些驱动程序可能同时适用于两个版本(例如:oracle驱动程序10)。原因并非所有功能都可以使用,但最终可能会连接到所有数据库并执行基础知识而不会出现问题。