当我终止脚本执行时,TOAD 会做什么?

ber*_*d_k 4 oracle

当它停止执行长时间运行的脚本时。脚本终止需要的时间比脚本运行的时间还要长。即我必须杀死蟾蜍。

第二次编辑:

刚刚发现这是Toad的一个特性而不是Oracle的

在 SQL 开发人员中,您可以停止执行长时间运行的查询,并且类似于 SQL Server Management Studio,您可以立即修改您的查询。

Gai*_*ius 5

跟踪您的会话。我希望您会发现 Toad 正在等待 Oracle 回滚您的事务 - 即使 Toad 被杀死,Oracle 也会继续在后台执行此操作。

实际上,当您中止查询时,Oracle 客户端应用程序会发送OCIBreak()。然而,为了实际处理这个,Oracle 端的影子进程必须返回并读取该消息 - 这只是一个请求,无法通过网络发送真正的中断(即 Unix 术语中的信号) . 如果影子进程处于它自己等待操作完成的状态(例如对操作系统的大 I/O 请求),那么它直到完成才能前进到下一个“滴答”并找到等待它的 break 命令。

如果您真的不耐烦,您可以通过v$process.spid where addr = v$session.paddr and sid=<your sid>在服务器上找到影子进程 ( ) 并kill在 shell 上发出命令来获得相同的结果。

顺便说一句,当长时间运行SELECT被中止时,有一些清理工作要做:不再需要以前版本的行。