Java使用ojdbc连接Oracle数据库时不能使用服务名连接的问题
最近,在做完數(shù)據(jù)庫遷移后,領導要求所有的前端應用必須使用oracle的服務名連接數(shù)據(jù)庫。所以在遷移數(shù)據(jù)庫之前對公司內(nèi)部開發(fā)系統(tǒng)做了全面準備。但是在遷移數(shù)據(jù)庫的當晚還是遇到了問題,因為忘記考慮第三方的應用系統(tǒng)。本人在遷移完數(shù)據(jù)庫后,疲憊的回到家中。結果屁股還沒有坐熱,就被第三方開發(fā)的人叫了過去,原因是他們無法連接數(shù)據(jù)庫。
系統(tǒng)環(huán)境:
數(shù)據(jù)庫——Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production RAC
應 用——JDK1.5
問題原因:
檢查web server的錯誤日志,發(fā)現(xiàn)以下錯誤信息:
Invalid connection string format, a valid format is:“host:port:sid”(無效的字符串連接格式,有效的格式:“host:port:sid”)
檢測應用程序使用的jar包,發(fā)現(xiàn)有ojdbc14.jar。故而,懷疑是ojdbc14.jar的原因。所以編寫測試程序,結果能夠使用服務名(格式:“host:port/service_name”)連接數(shù)據(jù)庫。將ojdbc14.jar換成11.2.0.3.0自帶的ojdbc5.jar后重啟應用結果還是拋出Invalid connection string format, a valid format is:"host:port:sid"錯誤。單獨測試ojdbc5.jar,結果沒有問題。所以,懷疑應用程序所使用的jar包中可能有早期的ojdbc。結果不出所料,發(fā)現(xiàn)了classes111.jar和classes12.jar。單獨測試classes111.jar和classes12.jar,結果發(fā)現(xiàn)不能夠使用服務名(格式:“host:port/service_name”)連接數(shù)據(jù)庫。將classes111.jar和classes12.jar從項目中刪除,重啟應用服務器一切正常
解決方法:
更換高版本的ojdbc即可,但切記一定刪除原有ojdbc。
以下是各版本數(shù)據(jù)庫的ojdbc的支持情況:
|數(shù)據(jù)庫版本 | JDBC 支持JDK | service_name | SID |
8i classes111.jar 1.5或1.6 不支持 支持
9i classes12.jar 1.5或1.6 不支持 支持
10g ojdbc14.jar 1.5或1.6 支持 支持
11g ojdbc5.jar 1.5 支持 支持
ojdbc6.jar 1.6 支持 支持
| 8i | classes111.jar | 1.5或1.6 | 不支持 | 支持 |
| 9i | classes12.jar | 1.5或1.6 | 不支持 | 支持 |
| 10g | ojdbc14.jar | 1.5或1.6 | 支持 | 支持 |
| 11g | ojdbc5.jar | 1.5或1.6 | 支持 | 支持 |
| 11g | ojdbc6.jar | 1.5或1.6 | 支持 | 支持 |
總結
以上是生活随笔為你收集整理的Java使用ojdbc连接Oracle数据库时不能使用服务名连接的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于使用 ./ 执行sh文件报错-bas
- 下一篇: Java8新特性之构造器引用、方法引用