ORA-00060:等待资源时检测到死锁

问题现象:

1、在更新A表的某一条记录S1、并且未提交;

2、然后再调用一个含有自治函数(procedure ***(serialno VARCHAR2,boType VARCHAR2) IS PRAGMA AUTONOMOUS_TRANSACTION;)的存储过程或函数,且该被调函数会更新A表的同一条记录S1;

此时会发生Oracle 系统报错“ORA-00060: 等待资源时检测到死锁”,

原因分析:

由于主调函数或过程中被更新的那条记录S1更新后未被提交,Oracle 会自动锁定该行数据,及发生行锁行为,被调函数再去更新已经被锁定的数据时会获取不到行锁,导致该错误的发生。

解决办法:不调用含有自治函数的函数或存储过程,将逻辑搬到主调函数中,和主调函数使用同一个事务。即可解决该错误

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值