加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 06:56:45 所属栏目:MsSql教程 来源:网络整理
导读:我有一系列的并行运行的脚本作为主机oracle 10g的AIX服务器上的一个nohup。这些脚本是由其他人写的,意图同时执行。所有脚本都在表上执行更新。我收到错误, ORA-00060: deadlock detected while waiting for resource 当我为了这个googled,我发现, http://
我有一系列的并行运行的脚本作为主机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成功完成”,或许您的脚本正在处理异常?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读