2017-03-08 221 views
0

什么是闲置数据库会话?在结束空闲的数据库会话之前,我们必须考虑哪些因素?我们什么时候可以终止它?什么是空闲数据库会话?何时终止这些会话?

+1

确实没有必要终止旧会话。 PMON应该通过并清理它们,但是如果您绝对必须确保它没有挂起的事务,并且v $ session中的状态不是活动的。 – mmmmmpie

+0

@mmmmmpie - 不要那么确定。我已经看到一个会议从一个没有看到用户活动*的IDE *运行数周*。就PMON而言,这些会议是现场直播的。 – APC

+0

他们在数据库中的状态如何?你有没有做过调查,为什么他们可以显示活跃? – mmmmmpie

回答

0

一个空闲的数据库会话是连接的,但用户在一段时间内没有做任何事情。这种连接的会话仍然消耗资源,如内存。

缺省的空闲时间的允许量是不受限制的:

select * from dba_profiles 
where resource_time = 'IDLE_TIME'; 

DBA可以创建定义一组空闲时间限制的轮廓。分配该配置文件的用户将被限制在闲置长度。在此之后的某个时候,PMON会扼杀会话:会话将仍然连接,但下次用户尝试做某事时会断开连接。

如果您的数据库确实有一个非默认的IDLE_TIME,那么非活动会话将永远保留。这可能不会成为一个问题,除非你有很多这样的问题,甚至这可能是一个用户培训问题(在完成任何工作后断开你的IDE)或者应用程序连接中的错误模块。

要检查是否有太多的长期空闲会话可以运行这样的查询:

select program, osuser, user, logon_time, last_call_et, sid, serial# 
from v$session 
where status = 'INACTIVE' 

感兴趣的列是last_call_et这是自用户最后一次在这做了什么秒数会话。如果last_call_et是一个很大的数字(你的里程会有所不同),那么你可能要考虑挑选该会话。但是,如果你需要释放一些资源,那真的只是麻烦。