Sesession 1 更新对象单没有提交
sql>update dept set dname='sale1' where deptno=30;
sql>update dept set dname='sale2' where deptno=30;
sql>update dept set dname='sale3' where deptno=30;
同时执行以上 sql 就会发生死锁,具体查看与解决办法如下:
--问题的根源可以通过以下的查询获取:
select sid,type,lmode,request,ctime,block from v$lock where type='TX';
--以上语句可以看到会话在以哪种方式(一般为排他模式即模式 6)请求 tx 锁,而陷入阻塞队列。
--解决方法,sqlplus 方式,只要找到引起阻塞会话的 sid,serial#,问题就此可以解决。
select blocking_session,sid,wait_class,seconds_in_wait from v$session where
blocking_session is not null order by blocking_session;
--确定锁住的对象
select s.session_id,s.object_id,d.object_name from v$locked_object s,dba_objects
d where s.object_id=d.object_id;
--找到 sid 后即可解决问题,将该会话 kill 掉
select sid,serial# from v$session where sid='上条语句得到的 session_id';
--杀死阻塞会话
alter system kill session 'session_id,serial#'
评论