解決jdbc連接oracle rac報錯一例: Got minus one from a read call

    某個項目之前是oracle 11g單機環境,現在升級成了oracle 11g rac環境。某個應用程序需要通過調用JDBC連接ORACLE數據庫,從ORACLE數據庫中查詢部分數據,而數據庫升級爲RAC環境後,JDBC連接ORACLE數據庫的代碼也做了相應修改。但發現改後卻老是報錯,錯誤信息爲java.sql.SQLException: Io 異常: Got minus one from a read call,改爲只連接某一個實例卻無問題。

    於是上網查這個錯誤信息,發現報這個錯的很多,原因也各不相同,排除了好幾種後問題還是沒有解決。還在上一家公司的時候我就發現同事在用JDBC連接ORACLE RAC數據庫時只連接了其中的一個實例,這樣當連接的那一臺ORACLE主機出問題時,將會造成JDBC連接數據庫失敗,而這顯然是不合適的,但當時同事說他們試過連接RAC數據庫就是不行,老報錯。現在想來估計是同類問題。而現在的同事也表示只能連單機,不能連RAC,因爲不懂JDBC,同事說不能連我也沒多想,最開始是建議他們在JAVA裏調ODBC來解決,經過測試也是可行的,但就是要多安裝一個oracle客戶端。後來上網查jdbc連接oracle rac的資料,發現是一大把的資料,並沒人反映連rac數據庫有什麼問題,這說明JDBC理論上連接ORACLE RAC應當是不存在問題的。

    於是接着問度娘,關於該報錯信息終於找到了一個我認爲比較合理的解釋
http://news.newhua.com/news/2011/0331/119074.shtml
    大意是指一些老的JDBC驅動包是不支持RAC數據庫的,想着我們這套系統還是多年前開發的,極有可能是JDBC驅動包過老引起的。馬上建議同事將JDBC驅動包換成最新的,於是從oracle的安裝目錄中找了JDBC驅動ojdbc6.jar替換原來的JDBC驅動包,再一測試,果然沒問題了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章