关于oracle session的状态

    最近同事做oracle的监控, 问我要不要把inactive的session kill掉, 释放更多的资源. 这个问题其实要考虑2个方面:

1,inactive的session能不能kill?
  session状态里面有active, inactive等.active表示当前session中有sql正在执行.
inactive表示当前没有sql在执行, 但并不代表这个session并不是无效不要了. 比如应用程序执行完一条sql,然后再执行复杂的计算, 然后再执行sql, 在应用执行复杂的计算时,session的状态就是inactive了, 这个时候如果kill了,那么等完成执行复杂的计算,再来执行sql时,应用就会收到oracle的错误了:killed session. 所以inactive session不能随便杀.

2,何时需要杀呢?
  当应用获取到session后, 做完db操作, 没有主动关闭session再去开新的session, 那么旧的session就再也访问不到了,这种session的状态是inactive, 如果这样的session很多, 就会影响db的性能了, 时间一长, session就会超出最大值. 该杀吧

猜你喜欢

转载自edisonrf.iteye.com/blog/2025435