如何在oracle数据库中停止查询

时间:2010-08-11 13:57:02

标签: c# oracle ado.net

我们正在使用oracle> 10.0在这里,我们的软件创建了不同类型的报告,用于评估存储的数据。由于数据量很大,这样的报告可能需要几分钟分钟才能创建,客户希望停止查询。

有没有办法说DMBS应该停止查询?获取状态信息(例如已经读取的行数)也很棒。

3 个答案:

答案 0 :(得分:2)

根据Tanel Poder here的博客文章,调用DBMS_RESOURCE_MANAGER.SWITCH_CONSUMER_GROUP_FOR_SESS (sid, serial#, 'CANCEL_SQL');(其中sid和serial#标识要中断的会话)可能有效,但他没有对其进行测试。

如果您的应用程序可以进行OCICancel()或jdbc Statement.cancel来电,那么这也可能有用。

在任何一种情况下,我都不确定如何获取已读取的行状态;中断一个假脱机输出的SQL * Plus会话将告诉你它输出了多少行,但是如果它还没有开始假脱机输出,它就不会。

答案 1 :(得分:0)

如果您可以为查询定义截止时间(或其他资源)限制,请设置Oracle配置文件和资源限制,并让RDBMS负责终止会话:doc here

答案 2 :(得分:0)