我收到以下錯誤時拋出:SQLException:違反協議。甲骨文JDBC驅動程序問題
java.sql.SQLException: Protocol violation
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:190)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:286)
at oracle.jdbc.driver.T4C80all.receive(T4C80all.java:766)
at oracle.jdbc.driver.T4CPreparedStatement.do0all8(T4CPreparedStatement.java:216)
at oracle.jdbc.driver.T4CPreparedStatement.fetch(T4CPreparedStatement.java:1225)
at oracle.jdbc.driver.OracleResultSetImpl.close_or_fetch_from_next(OracleResultSetImpl.java:373)
at oracle.jdbc.driver.OracleResultSetImpl.next(OracleResultSetImpl.java:284)
Oracle系統在Solaris 5.10運行10.2.0.3.0。 jdbc驅動程序在JDK 1.6.0_21上運行(如果它導入,java也在Solaris 5.10機器上運行)。我已經嘗試了幾種不同的oracle瘦驅動程序,包括最新的和看起來與oracle版本完全匹配的驅動程序。
我正在運行的查詢很簡單:「select * from some_table order by key1,key2,key3」然後遍歷結果集並寫入文件。該桌有大約1200萬行,所以我預計這個過程會持續很長時間,但似乎在5-15分鐘內死亡。每次運行它時,它都會出現在不同的行上,所以我認爲問題不在於數據。
我發現了oracle警報日誌,但我不能說那裏有什麼和我的進程有關。儘管如此,我不是Oracle專家,也許我需要看一下oracle的設置。奇怪的是,我在不同的連接上運行了大約五種類型的查詢(一對更復雜一些),只有兩個最簡單的查詢會遇到這個問題。
任何關於如何縮小問題的幫助或想法,將不勝感激。
也許你的數據庫服務器上運行的內存?你是否正確地關閉了Java中的資源?這是發生在你的系列中的第一個查詢運行還是後來的一個? – Riggy 2011-01-13 21:24:21