1.查哪些对象被锁,可以看下是否有自己不能插入语句的表:
select a.*,b.* from v$locked_object a,dba_objects b where b.object_id = a.object_id;
2.查出锁住对象的session ID 和serial#,获取这两个字段值:
select t2.username,t2.sid,t2.serial#,t2.logon_time from v$locked_object t1,v$session t2 where t1.session_id=t2.sid order by t2.logon_time;
3.从2中获取的两个值,杀死session:
alter system kill session 'ID,Serial#';
如果数据过多,可以批量找出删除语句,复制出来一起执行
select 'alter system kill session ''' || a.SID ||',' || a.SERIAL# ||''';'as tmp_sql,
a.SERIAL#,a.SQL_TRACE_BINDS,
c.OBJECT_NAME,
a.COMMAND,
a.LOCKWAIT,
a.STATUS,
a.SQL_TRACE,
a.SQL_HASH_VALUE,
a.SQL_ADDRESS,
a.SQL_ID
from v$session a, v$locked_object b, dba_objects c
where a.sid = b.SESSION_ID
and b.OBJECT_ID = c.OBJECT_ID;