本帖最后由 dan 于 2021-2-26 22:13 编辑
一、问题描述
oracle 运行select ... for update时,有时会卡住
二、处理过程
1、查看是否存在死锁进程
SELECT vs.sid, vs.serial#
FROM v$locked_object vlo, dba_objects do, v$session vs
WHERE do.object_id = vlo.object_id AND vlo.session_id = vs.sid
返回比如:
sid serial#
28 60838
39 11693
2、根据返回值,结束对应进程。
比如:
ALTER system KILL session "28,60838";
ALTER system KILL session "39,11693";
3、再次查看是否存在死锁,无返回值是对的。再次运行select ... for update时,就正常了
三、解决方案 oracel进程在等待另一个进程解锁某个表,两个进程进入了死锁状态,解锁过程就是杀死这个死锁进程。
|