Oracle死锁是否有可能无法回滚,必须手动清除死锁?
我在 Oracle 文档中读到,它说:
Oracle Database automatically detects deadlocks and resolves them by rolling back one statement involved in the deadlock, releasing one set of the conflicting row locks.
我的问题是,是否有一种情况不会发生这种情况?
最佳答案
Is it possible that a Deadlock is not being rolled back in which we have to manually clear the Deadlock.
嗯,并不是所有事务都被回滚。 Oracle 自动检测到死锁,抛出ORA-00060:WAITING资源时检测到死锁
,并回滚 Oracle 判定为受害者的死锁涉及的事务之一。之前成功的交易不会回滚。即使在死锁错误之后,如果发出提交,则先前成功的事务也将被提交。此时,其他 session 的事务也会成功,您可以发出提交。
死锁会自动清除——您永远不需要清除它们。
有关详细示例,请查看此 answer 。您可以使用简单的测试用例进行重现,如下所示:Understanding Oracle Deadlock
关于oracle - oracle死锁无法回滚吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29531249/