如何取消或终止DB2 CLP中长时间运行的查询而不杀死CLP?

时间:2016-03-16 07:38:09

标签: db2 command-line-interface terminate

假设我使用CLP在IBM DB2数据库中开始执行低效且长时间运行的查询。 也许有一些可怕的连接在数据库中占用了大量的处理时间。也许我还没有那么急需的索引。

# db2 +c -m
db2 => connect to mydb
db2 => select * from view_with_inefficient_long_running_query
//// CLP waiting for database response

如何取消处理此语句/查询而不杀死DB2 CLP?我可以通过杀死它来实现,即按 Ctrl - C

db2 => select * from view_with_inefficient_long_running_query
^C
SQL0952N  Processing was cancelled due to an interrupt.  SQLSTATE=57014
# db2 +c -m
db2 => 

但还有另一种更优雅的方式吗?也许另一个 Ctrl - 快捷方式?我已经看过this question,但它并没有谈论我想要的东西。

3 个答案:

答案 0 :(得分:2)

AFAIK,没有CTRL-来终止CLP。您的选择是打开另一个终端会话并使用LIST / FORCE应用程序,CTRL-Z CLP暂停它并使用另一个CLP到LIST / FORCE或使用像Data Server Manager这样的GUI工具来查找应用程序并强制它终止

db2 list applications for <database>

获取您要终止的会话的应用程序句柄。

db2 force application ( application-handle )

请参阅LIST APPLICATIONSFORCE APPLICATION

答案 1 :(得分:1)

您是否愿意使用https://www.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.apdv.cli.doc/doc/r0008809.html

中的QueryTimeout配置

这样您的命令就会停止并报告SQLSTATE 57013

-913 UNSUCCESSFUL EXECUTION CAUSED BY DEADLOCK OR TIMEOUT.

答案 2 :(得分:1)

为什么不直接从UNIX提示符开始直接使用CLP?

db2 "select * from view_with_inefficient_long_running_query"

您可以点击Ctrl-C取消查询。 DB2 Backend Process(db2bp)维护与数据库的连接,您可以获得在UNIX shell中工作的所有好处 - 优越的历史记录,命令管道等。