1.开一个会话session1
SQL>select sid from v$mystat where rownum=1;
SID
158
SQL>create table t(x int primary key);
table created
SQL>insert into t values(1);
commit;
SQL>update t1 set t=10 where x=1;
2.再开一个会话
SQL>select sid from v$mystat where rowunm=1;
SID
157
SQL>update t1 se x=10 where x=1;
这个时候session2被session1锁住
3、执行以下语句查看是哪个进程和序列锁住了表
select sess.sid,
sess.serial#,
lo.oracle_username,
lo.os_user_name,
ao.object_name,
lo.locked_mode
from v$locked_object lo,
dba_objects ao,
v$session sess
where ao.object_id = lo.object_id and lo.session_id = sess.sid
4、执行下面的语句,将改锁表的进程和序列杀掉了
alter system kill session '1020,38953' --(1020,就是执行第一步语句得到的sid字段值,38953就是serial#字段值)
参考博文:http://www.cnblogs.com/srsee/archive/2013/05/10/infi0510_2.html
原文地址:http://blog.51cto.com/linux10000/2070177