oracle中inactive会话的处理方法
参考
1.方法一
(1)UNIX的方法
A。sql>select usename,sid,paddr,status
from v$session
where usename='USERNAME'
AND STATUS='INACTIVE';
B。sql>SELECT SPID FROM V$PROCESS WHERE ADDR=上一步查出的PADDR
C。$KILL SPID
(2)WINDOWSnt/2000的方法
c:\>orakill SID SPID
2 ,方法二
select A.SID,B.SPID,A.SERIAL#,a.lockwait,A.USERNAME,A.OSUSER,a.logon_time,a.last_call_et/3600 LAST_HOUR,A.STATUS,
'orakill '||sid||' '||spid HOST_COMMAND,
'alter system kill session '''||A.sid||','||A.SERIAL#||'''' SQL_COMMAND
from v$session A,V$PROCESS B where A.PADDR=B.ADDR AND SID>6
3
可以先设置IDLE_TIME(给用户指定PROFILE),INACTIVE状态的连接超过IDLE_TIME,SESSION的状态将改为SNIPED。
再先一个定时进程,使用楼上XIE3000的方法,杀进程就可以了。
KILLED 状态说明连接在回滚,当然会占用资源。
可以再将系统进程杀掉,再到数据库中杀一次进程。
4,方法四
我觉得可以在sqlnet.ora文件里面加上sqlnet.expire_time这个参数来解决,设置一个分钟数,这是ORACLE建议的DCD解决方法