2016-09-27 54 views
2

我正在使用WSO2 Data Services(3.5.1)服務器連接一些Oracle 12c數據庫。但是,爲了支持遺留,我還需要連接到不同的版本,如10g和8i。DSS無法連接到不同的Oracle數據庫版本

有問題,使用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數據庫中設置參數SQLNET.ALLOWED_LOGON_VERSION=8在Oracle /網絡/管理/ sqlnet.ora文件,並使用ojdbc14.jar,但由於基礎設施限制,這種做法是不可接受的。

我想知道是否有同時使用DSS兩個驅動程序的方式,也許指定擴展不同OracleDriver類的一些自定義的Java類,並配置DSS類加載器...或者一些不同的解決方案。

任何幫助,將不勝感激。

回答

1

這是一個已知的向後兼容限制1,2在oracle驅動程序中,並且在wso2 DSS中沒有解決方案作爲解決方法。這已在Oracle version compatibility matrix中明確說明。

您是否嘗試過可能適用於兩個oracle版本(例如:oracle驅動程序10)的舊版ojdbc驅動程序的不同版本。因爲不是所有的功能都可以工作,但最終可能會連接到所有數據庫並執行基本操作而不會出現問題。