Oracle存储过程编译卡死的解决方法
有时候多次test存储过程,plsql卡住不动(未响应),进入假死状态(如下图)。 有时候一个存储过程编译到一半,突然停掉,再编译发现也是卡卡住不动了。
于是,打开任务管理器杀死进程,重新登录,但是依然没有解决问题。 后查资料,发现是session被锁的原因,那么重启数据库问题就解决了。可是反复重启耗时费力,如何不重启数据库就解决呢? 下面给出两种方案:
1、方法一:PLSQL解决
Tool(工具)—session(会话) 可以筛选“My sessions ”,然后看到“Action”一栏目,找到运行的窗口,然后选中,右键弹出选中“关闭”命令,然后选中“是”清除这条调试存储过程的会话即可,如下图所示:
2、方法二:SQL命令
1、查找当前存储过程的sid,serial#:
select * from v$session t where t.ACTION like%xxx%; 或 先找到sid: select va.sid,va.OBJECT from v$access va where object like %CREAT_% 再根据sid找serial# SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID= 1722
2、执行kill命令杀死session:
alter system kill session1722,37;
现在就大功告成了,不用反复重启数据库了。