数据库:Oracle 10g
操作系统:Windows Server 2003 64位
我查询Web应用程序生成的Oracle会话列表(按program = 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因此,这意味着Oracle每20分钟检查一次连接是否仍处于活动状态。
所有用户方案都有默认配置文件。这意味着没有会话将永不过期或死亡吗?
在回应Phil的评论时添加:
补充了Phil的回答:
我的是Oracle 10g,因此v $ session上没有PREV_EXEC_START列。但是我再次查询了包括Last_Call_ET列(我在问题上添加了该图片)。
—
Delmonte
我与开发人员进行了交谈,他们告诉我他们在Web应用程序中使用ODP.NET。因此,可以肯定的是,这些会话是在连接池中生成的。当Oracle的状态显示为INACTIVE时,我不完全信任,但是在这种情况下...您认为我可以取消两周前的会话吗?
—
–'Delmonte
否。
—
Philᵀᴹ
INACTIVE
仅表示您检查的确切时刻没有执行SQL语句v$session
。如果它们是连接池的一部分,那么它们就可以正确地工作-连接池的全部目的是消除大量登录/注销的需要,并保持持久的会话以快速启动(一次又一次更大的开销登录)只是执行一个查询)。我不明白您为什么为此担心。
@Phil-我很乐意将此作为答案!
—
贾斯汀·凯夫
v$session.PREV_EXEC_START
对这些会议?我怀疑它们是连接池的一部分,因此没有被闲置,因为它们被频繁使用。