在 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 中停止或终止长时间运行的查询的主要内容,如果未能解决你的问题,请参考以下文章

sqlalchemy:停止长时间运行的查询

当您没有 admin/root/sudo 访问权限时如何在 Netezza 上终止长时间运行的查询

Apache Zeppelin 0.7.3 - Oracle JDBC 问题和长时间运行的查询

如果 XHR 获得 abort(),我如何终止长时间运行的 Django 请求?

如何终止正在运行的 DolphinDB 查询

如何停止长时间运行的 BigQuery 作业?