在对Procedure、Function或Package进行Debug时,如果长时间没有操作,公司的防火墙会杀掉会话连接。这个时候数据库不会主动的释放会话的资源,如果再次对Procedure、Function或Package进行Debug的话,就会产生等待。因为被防火墙杀掉的会话还在运行着上次的Debug,会有锁的存在。只用等到数据库回收上次Debug的会话资源或者DBA手动将会话KILL掉。以下是手动KILL会话的方法:
1、得到所有的会话的信息
1、select * FROM V$SESSION B where b.SCHEMANAME <> 'SYS'
ps:执行语句 之后会有一个action字段(sessionname)和 osuser(用户)
可以看自己用户下的session。
2、杀死会话
2、ALTER SYSTEM KILL SESSION 'SID,SERIAL#' IMMEDIATE;
PS:此处的sid与SERIAL#====可以在第一部中查找到
然后就可以执行了,搞了半天