怎么在Pro*c里判断操作是否进入死锁状态?
OS: linux 2.4
DB: Oracle 9.2.0.4.0
请教怎么在Pro*c里判断(检测)操作是否进入死锁状态?
我的一个程序在运行时需要对表A执行DML操作,而同时别人的一个程序也会对表A执行DML操作。因为别人程序的不稳定性,经常执行了操作后不提交
导致我的程序在处理时进入死锁状态(长等)。有什么方法可以检测到这种情况的出现,或者是可以设置超时?当超时(或者死锁)时进行告警!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我们在oracle版讨论了
呵呵
应该说你是对表里的某些记录操作时,存在这种状况,因为oracle 是行级锁,不是表级锁.
你可以这么做,例如,你想 update a set id='1' where name ='11';
那么你可以先这么做, select id from a where name ='11' update nowait;
if sqlca.sqlcode <>; 0
出错;
else
udate .......
意思是先判断一下这条记录是否别人在操作.如果别人在操作数据库就返回一个错误号码,你就不用去更新这条记录,如果错误号码是0 , 说明没有人操作这条记录,你就可以进行你的操作了,
我说清楚了吗?