oracle死锁可以不回滚吗?

时间:2015-04-09 06:24:26

标签: oracle database-deadlocks

Oracle中的死锁是否可能无法回滚,我们必须手动清除死锁?

我在Oracle文档中读到,它说:

  

Oracle数据库会自动检测死锁并解决它们   回滚一个涉及死锁的声明,释放一组   冲突的行锁。

我的问题是,是否会出现不会发生这种情况的情况?

1 个答案:

答案 0 :(得分:2)

  

是否有可能没有回滚死锁,我们必须手动清除死锁。

嗯,这不是所有回滚的事务。 Oracle自动检测到死锁,抛出ORA-00060: deadlock detected while waiting for resource,并回滚Oracle决定作为受害者的死锁中涉及的一个事务。以前成功的事务不会回滚。即使在死锁错误之后,如果发出提交,也会提交先前成功的事务。此时,其他会话的事务也将成功,您可以发出提交。

死锁会自动清除 - 您永远不需要清除它们。

有关详细示例,请查看此answer。您可以使用此处演示的简单测试用例进行复制:Understanding Oracle Deadlock