为什么Oracle会话在两周处于非活动状态后仍处于活动状态

DB:Oracle 10g

O / S:Windows Server 2003 64位

我查询由Web应用程序生成的Oracle会话列表(按程序= w3wp.exe过滤)

select * from V$session
where UPPER(program) LIKE '%W3%'
order by logon_time

根据Logon_Time,为什么从2012年7月31日或2012年8月1日或今天(2012年8月21日)之前的任何会议仍然活着?

我在sqlnet.ora上配置了:
SQLNET.EXPIRE_TIME = 20
因此,这意味着每20分钟Oracle检查连接是否仍处于活动状态.

所有用户模式都具有默认配置文件.这意味着没有会话永远不会过期或死亡?

根据Phil的评论补充说:

根据Phil的回答添加:

最佳答案
我怀疑他们是连接池的一部分&因此他们没有闲置,因为他们经常被使用.

v $session中的INACTIVE仅表示在检查v $session时没有执行SQL语句.

如果他们是连接池的一部分,他们通过长时间登录正确地完成工作.连接池的整个要点是消除了大量登录/注销的需要.为快速查询启动保留持久会话 – 执行一个查询会有更大的开销登录,然后每次都断开连接.

要获取每个会话的上次活动时间:

select username, UPPER(program), logon_time, 
       floor(last_call_et / 60) "Minutes since active", status
from v$session
where UPPER(program) LIKE '%W3%'
order by last_call_et;

我建议不要杀死会话,除非你知道这样做不会在应用程序端引起问题(例如,尝试使用已被杀死的会话).

可能是您正在查看错误配置的连接池,一旦应用程序启动,该连接池会创建数百个连接 – 连接池可能比它需要的数量级大一些.我建议联系开发人员/应用程序支持人员和他们.看一下连接池的配置方式.

经过一些研究,w3wp.exe是IIS应用程序池进程 – 您几乎肯定想与您的IIS Web服务器管理员交谈,以帮助深入了解连接池配置.

转载注明原文:为什么Oracle会话在两周处于非活动状态后仍处于活动状态 - 代码日志