当我发现了我做一个DML操作的时候被锁住了,我解决的办法:
步骤一、
SQL> col sess format a15
SQL> set linesize 200
SQL> select inst_id, decode(request,0,'Holder: ', ' Waiter: ')||sid sess, id1, id2, lmode,
request, type ,block
from gv$lock
where (id1, id2, type) in (select id1, id2, type from gv$lock where request>0)
order by id1, request;
INST_ID SESS ID1 ID2 LMODE REQUEST TY BLOCK
---------- --------------- ---------- ---------- ---------- ---------- -- ----------
1 Holder: 127 655395 245 6 0 TX 1
1 Waiter: 152 655395 245 0 6 TX 0
注意:
可以看出,我的会话id是152,我被锁住了,那么锁住我的那个会话是127.
SQL> col sess format a15
SQL> set linesize 200
SQL> select inst_id, decode(request,0,'Holder: ', ' Waiter: ')||sid sess, id1, id2, lmode,
request, type ,block
from gv$lock
where (id1, id2, type) in (select id1, id2, type from gv$lock where request>0)
order by id1, request;
INST_ID SESS ID1 ID2 LMODE REQUEST TY BLOCK
---------- --------------- ---------- ---------- ---------- ---------- -- ----------
1 Holder: 127 655395 245 6 0 TX 1
1 Waiter: 152 655395 245 0 6 TX 0
注意:
可以看出,我的会话id是152,我被锁住了,那么锁住我的那个会话是127.
步骤二、
如果你知道127这个会话是谁,那么你可以先通知他让他提交自己的事务。
如果你知道127这个会话是谁,那么你可以先通知他让他提交自己的事务。
步骤三、
如果你不知道127这个会话是谁,那么你可以联系管理员,让管理员处理。
如果你不知道127这个会话是谁,那么你可以联系管理员,让管理员处理。
步骤四、
如果你是管理员,而你自己又联系不到127这个会话,那么你可以杀掉他的进程:
首先查询他的会话信息:
SQL> select sid,serial# from v$session where sid=127;
SID SERIAL#
---------- ----------
127 4407
然后杀掉他的进程:
SQL> alter system kill session '127,4407';
如果你是管理员,而你自己又联系不到127这个会话,那么你可以杀掉他的进程:
首先查询他的会话信息:
SQL> select sid,serial# from v$session where sid=127;
SID SERIAL#
---------- ----------
127 4407
然后杀掉他的进程:
SQL> alter system kill session '127,4407';
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29107230/viewspace-769244/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29107230/viewspace-769244/