如果我在捕获 ORA-00060 死锁异常 (Oracle 10g) 的 PL/SQL 函数中编写代码,只是回滚并重试事务,这样的函数将在有限的时间内完成(您可以假设数据库要完成的工作是有限的,而不是无限的流)?
我应该在重试前添加等待时间有什么特别的原因吗?
最佳答案
一般来说,这取决于系统中的其他事务,尤其是陷入死锁的其他事务正在做什么。您可能会遇到第二次尝试会因资源锁定而无限期阻塞,甚至遇到第二次死锁的情况。
至少,在实现此解决方案之前,我认为您应该了解死锁是如何产生的,并考虑当第一个 session 出现异常时,其他涉及的 session 可能会发生什么。
关于sql - 在循环中重试死锁,他们最终会解决吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7850037/