Java 1.6和Oracle JDBC 14 setQueryTimeout不工作
我们运行Java1.6并使用最新的ojdbc14.jar。我们连接到一个远程Oracle数据库。 我们希望设置QueryTimeout,因为完成查询的时间不得超过2分钟 我已经这样做了:Java 1.6和Oracle JDBC 14 setQueryTimeout不工作,java,sql,database,oracle,jdbc,Java,Sql,Database,Oracle,Jdbc,我们运行Java1.6并使用最新的ojdbc14.jar。我们连接到一个远程Oracle数据库。 我们希望设置QueryTimeout,因为完成查询的时间不得超过2分钟 我已经这样做了: statement = conn.prepareCall(call); statement.setQueryTimeout(120); statement.executeQuery(); 大约8分钟后,它终于超时了!对此有什么想法或解决方法吗? 一如既往,非常感谢您的帮助 编辑:我们使用精简驱动程
statement = conn.prepareCall(call);
statement.setQueryTimeout(120);
statement.executeQuery();
大约8分钟后,它终于超时了!对此有什么想法或解决方法吗?
一如既往,非常感谢您的帮助
编辑:我们使用精简驱动程序请参见Oracle JDBC驱动程序中查询超时的工作原理: 长话短说:
尝试在客户端JVM系统属性中传递-Doracle.net.disableOob=true。根据 从11g开始,Thin默认使用带外中断。如果用户更喜欢使用带内中断而不是带外中断,则此属性可以设置为true
在某些情况下,底层协议不支持带外中断,或者数据库未配置为侦听带外中断。如果您使用的是Java SE 6,为什么不使用ojdbc6.jar?大多数驱动程序中对
setQueryTimeout
的AFAIK支持有限或不存在。请确保Oracle驱动程序确实支持它。好的,我将下载ojdbc6.jar并尝试使用它,谢谢…运气不好,仍然没有超时。我必须找到一个支持setQueryTimeout的jar:|您的驱动程序版本是石器时代!使用11.2.0.3.0。这与超时配合得很好。