有时候多次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 session'1722,37';
现在就大功告成了,不用反复重启数据库了。