oracle中inactive会话的处理方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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,ERNAME,A.OSUSER,a.log on_time,st_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解决方法。