网上百度到了出现这种现象原因,说的好像还挺有道理的,所以就copy过来:
在对Procedure、Function或Package进行Debug时,如果长时间没有操作,公司的防火墙会杀掉会话连接。这个时候数据库不会主动的释放会话的资源,如果再次对Procedure、Function或Package进行Debug的话,就会产生等待。因为被防火墙杀掉的会话还在运行着上次的Debug,会有锁的存在。只用等到数据库回收上次Debug的会话资源或者DBA手动将会话KILL掉。
手动kill session的方法:
1.SELECT*FROMV$DB_OBJECT_CACHEWHERENAME=upper('PROCEDURE_NAME')ANDLOCKS!='0'; 注意:PROCEDURE_NAME为存储过程的名称。
2.SELECTSIDFROMV$ACCESSWHEREOBJECT='PROCEDURE_NAME';
3.SELECTSID,SERIAL#,PADDRFROMV$SESSIONWHERESID='SID';
4.ALTERSYSTEMKILLSESSION'SID,SERIAL#'IMMEDIATE;
或者 selectvs.SID,vs.SERIAL#,vs.PADDR,'ALTERSYSTEMKILLSESSION'''||vs.SID||','||vs.SERIAL#|| '''IMMEDIATE;' fromV$ACCESSva,V$SESSIONvs where1=1 andva.SID=vs.SID andva.OBJECT=upper('SZA_PA_BGT_ADJ_COMMON_PUB')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。