我遇到了以下异常:
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 thin drivers,包括最新的和那个看起来完全匹配Oracle版本的。
我运行的查询相当简单:“select * from some_table order by key1, key2, key3”,然后迭代结果集并写入文件。表约有1200万行,所以我期望这个过程会运行很长时间,但它似乎在进行5-15分钟后就停止了。每次运行时,它都会在不同的行上崩溃,所以我认为问题不在数据上。
我找到了Oracle警报日志,但我无法确定其中的任何内容与我的进程有关。即便如此,我也不是Oracle专家,也许有一个Oracle设置我需要查看。奇怪的是,我正在不同连接上运行大约五个这样的查询(有几个稍微复杂一些),只有两个最简单的查询遇到了这个问题。
如果您能提供任何帮助或想法来缩小问题范围,将不胜感激。