数据库 – ORA-00060:等待资源时检测到死锁

前端之家收集整理的这篇文章主要介绍了数据库 – ORA-00060:等待资源时检测到死锁前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一系列的并行运行的脚本作为主机oracle 10g的AIX服务器上的一个nohup。这些脚本是由其他人写的,意图同时执行。所有脚本都在表上执行更新。我收到错误

ORA-00060: deadlock detected while
waiting for resource

当我为了这个googled,我发现,
http://www.dba-oracle.com/t_deadly_perpetual_embrace_locks.htm

尽管这些脚本同时在同一个表上执行更新,但是它们对由WHERE子句确定的表的不同记录执行更新,而且它们之间没有重叠的记录。

那么这会造成错误吗?

无论在表上执行更新的位置,都会发生此错误

我应该始终避免在桌上同时更新吗?

奇怪的是我也发现了nohup.out日志,
上述引用错误后,PL / sql成功完成。

这是否意味着oracle已经从僵局中恢复,并成功完成更新,还是应该连续重新运行这些脚本?
欢迎任何帮助。

提前致谢。

解决方法

你可以在不只是行锁上获得死锁,例如请参阅 this.脚本可能会竞争其他资源,如索引块。

过去我已经解决了这个问题,就是通过对并行性进行工程设计,使得不同的实例正在处理不太可能影响彼此接近的块的部分工作负载;例如,为了更新一个大的表,而不是使用像MOD(n,10)这样的东西设置并行从站,我会使用TRUNC(n / 10),这意味着每个从站都在连续的数据集上工作。

当然,还有更好的方法来分解并行工作,例如DBMS_PARALLEL_EXECUTE

不知道为什么你得到“PL / sql成功完成”,或许您的脚本正在处理异常?

猜你在找的MsSQL相关文章