我收到以下错误时抛出: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