一个非法的存储过程无法进行删除,编译等操作

开发人员告诉有个过程无法进行任何操作,查询dba_ddl_locks发现有个159的sessions在这个过程上有个分析锁

查询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消失

重新编译该过程就好了

请使用浏览器的分享功能分享到微信等