oracle - oracle死锁无法回滚吗?

标签 oracle database-deadlocks

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/

相关文章:

sql-server - SQL Server死锁修复: Force join order,或自动重试?

sql - 重试 INSERT 导致的死锁

MySQL全表更新时死锁

postgresql - 运行更新时 PostgreSQL 中的死锁

oracle - 将用户导出到 Oracle 11gr2 中的 dmp 文件

sql - 新的oracle用户无法访问表

mysql - 查询正在锁定表,无法终止该进程

sql - Oracle SQL XML 函数 - 如何在 XML Prolog 中进行编码?

java - 来自 Oracle PL/SQL 存储过程的 JDBC 结果集

sql - 如何在 DataGrip 中设置服务器输出