我们正在使用oracle> 10.0在这里,我们的软件创建了不同类型的报告,用于评估存储的数据。由于数据量很大,这样的报告可能需要几分钟分钟才能创建,客户希望停止查询。
有没有办法说DMBS应该停止查询?获取状态信息(例如已经读取的行数)也很棒。
答案 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)