在对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#====可以在第一部中查找到
然后就可以执行了,搞了半天
本文详细介绍了在Oracle数据库中,当公司防火墙中断会话连接时,如何手动KILL会话来解决调试Procedure、Function或Package时产生的等待问题。通过查询V$SESSION并使用ALTER SYSTEM KILL SESSION命令,可以有效处理被防火墙中断的会话,避免资源锁定。
3697

被折叠的 条评论
为什么被折叠?



