oracle使用什么算法来检测死锁?死锁检测涉及哪些步骤?如果有人一步一步解释,我将不胜感激。感谢。
答案 0 :(得分:2)
在高级别,当会话A请求锁定时,Oracle会给它或者它记录会话A被任何会话阻止它拥有它有兴趣获取的任何锁定,会话B.最简单的情况是,如果A是当B同时在A上被阻止时阻塞在B上,你有一个死锁。更一般地说,当依赖图中存在任何类型的循环时 - A在B上被阻塞,B在C上被阻塞,C在A上被阻塞 - 那么你就有了死锁。要检测死锁,Oracle只需定期(每隔几秒)遍历此依赖关系图,记录任何周期,并通过终止其中一个请求并解决ORA-00060错误来解决死锁。
当然,你可以深入了解为什么会发生死锁,如何防止它们,Oracle如何确定哪个会话持有锁等等,除非你想缩小问题范围位。