有时候多次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';

现在就大功告成了,不用反复重启数据库了。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐