查询v$session,发现159这个session的状态为killed,可等了半天仍旧这个session没有释放掉这个锁,后来查询v$process的spid,从操作系统杀掉后就好了!
相关过程如下:
1、查询dba_ddl_locks
select * from dba_ddl_locks where name=upper('l2_data_recv');
发现session_id=159
2、查询v$session
select sid,paddr,status from v$session where sid=159;
结果status=KILLED,由于很长时间该session无法释放掉,于是试图查询v$process,看是否操作系统进程仍旧没有释放掉。
3、查询v$process
select spid from v$process pr,v$session se where pr.addr=se.paddr
and se.sid=159;
4、在操作系统上执行
kill -9 spid
5、回到数据库,等不到2秒,该session消失
重新编译该过程就好了