记录一次线上异常ORA-00060: deadlock detected while waiting for resource

昨晚监控出现的问题.字面意思上是"等待资源时检测到死锁"

项目是通过报文进行交互的,在批处理时,两个或多个线程对同一张表进行update操作,最后爆出这个异常,出异常的线程回滚数据,其他的update会继续commit提交事务.

目前彻底解决方法还在寻找中,后续补上

 

问题找到了:

 两个线程,对应两个表的记录操作

 甲线程是:先A后B

 乙线程是:先B后A

解决这个问题就只需要将顺序统一就可以,

但是项目里牵扯出一个历史问题,就是都是update操作,甲乙先后顺序很重要,要是混乱了,状态就会出现异常.

所以最后的解决方法是保证乙线程处理逻辑在甲线程后面.

最后方案,报文处理范围时间提前隔离开,避免同一时间阶段批量处理

posted @ 2020-01-03 10:11  陌上金丸看落羽  阅读(1776)  评论(0编辑  收藏  举报