在 JDBC 中停止或终止长时间运行的查询
Posted
技术标签:
【中文标题】在 JDBC 中停止或终止长时间运行的查询【英文标题】:Stop or terminate long running query in JDBC 【发布时间】:2012-06-08 10:39:43 【问题描述】:有什么方法可以停止或终止 JDBC 中长时间运行的 Oracle 查询?它通常以重新启动应用程序服务器以使 jdbc 与 Oracle DB 断开连接而告终。
在 Java 或 JDBC 中寻找类似于 SQL Plus - Kill session
的功能
在 SQL Plus 中
SQL> ALTER SYSTEM KILL SESSION 'sid,serial#';
在java中执行的任何线索?
【问题讨论】:
This solution 可能由Oracle驱动实现。 是的,应该是。见this question。 【参考方案1】:jdbc 超时,如果你在另一个线程中运行你的查询,你可以使用 Statement.cancel() 来杀死它。
【讨论】:
【参考方案2】:可能有点过分,但我建议改用JDBC Timeout。它还有一个额外的好处,就是优雅地终止而不是强制终止。
使用现代应用服务器,您通常可以从数据源配置中定义 JDBC 超时。
【讨论】:
我想让用户决定何时终止查询。可以在运行时更改并实现滑动超时之类的功能吗? @supertonsky 我不知道有这样的功能。【参考方案3】:你可以试试 Statement.setQueryTimeout
【讨论】:
以上是关于在 JDBC 中停止或终止长时间运行的查询的主要内容,如果未能解决你的问题,请参考以下文章
当您没有 admin/root/sudo 访问权限时如何在 Netezza 上终止长时间运行的查询
Apache Zeppelin 0.7.3 - Oracle JDBC 问题和长时间运行的查询