如何停止oracle撤消进程?

时间:2012-06-28 06:09:21

标签: sql oracle

我想知道如何停止oracle的撤消进程?我试图删除数百万行的大表,并且在进程中我杀了会话但是它开始撤消删除,并且对于一个两小时的数据库,数据库变得非常慢。我不想让撤消过程继续下去。有没有办法阻止它?

3 个答案:

答案 0 :(得分:10)

您无法停止回滚事务的过程,因为这样做会使数据库处于不一致状态。

当您执行长时间运行的删除过程时,Oracle可能会在您决定是提交还是回滚事务之前将更改的块写入数据文件。如果在执行事务的过程中中断了该过程,则磁盘上会有一些更改的块,内存中会有一些更改的块,以及一些未更改的块。回滚事务是将数据库返回到开始执行DELETE语句之前所处状态的唯一方法。

答案 1 :(得分:2)

正如您所发现的,逐行删除过程可能非常慢。如果删除都是在单个事务中完成的,就像这里的情况一样,它们可能变得更慢。您可能需要考虑以下选项:

  1. 如果您要删除表格中的所有行,可能需要考虑使用TRUNCATE TABLE语句。

  2. 如果您没有删除表中的所有行,则应该在删除一定数量的行后将您的过程更改为COMMIT。

  3. 与此同时,您将不得不等到该回滚过程完成。

    分享并享受。

答案 2 :(得分:0)

当你尝试截断表时,它还在删除你会看到一个ORA-00054"资源很忙,并且在指定的NOWAIT或超时时间内获得"