温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Oracle inactive session的清理

发布时间:2020-02-27 04:32:08 来源:网络 阅读:693 作者:lych528 栏目:关系型数据库

STATUS

ACTIVE - Session currently executing SQL

INACTIVE

KILLED - Session marked to be killed

CACHED - Session temporarily cached for use by Oracle*XA

SNIPED - Session inactive, waiting on the client

(1)active 处于此状态的会话,表示正在执行,处于活动状态。

        官方文档说明:

        Any session that is connected to the database and is waiting for an event that does not belong to the Idle wait class is considered as an active session.

(2)killed处于此状态的会话,被标注为删除,表示出现了错误,正在回滚。

        当然,也是占用系统资源的。还有一点就是,killed的状态一般会持续较长时间,而且用windows下的工具pl/sql developer来kill掉,是不管用的,要用命令:alter system kill session 'sid,serial#' ;

(3)inactive 处于此状态的会话表示不是正在执行的

        该状态处于等待操作(即等待需要执行的SQL语句),通常当DML语句已经完成。 但连接没有释放,这个可能是程序中没有释放,如果是使用中间件来连接的话,也可能是中间件的配置或者是bug 导致。

        inactive对数据库本身没有什么影响,但是如果程序没有及时commit,那么就会造成占用过多会话。容易是DB 的session 达到极限值。

解决方法:

1 SQLNET.EXPIRE_TIME (适当设置大小)
2 alter profile default limit idle_time 5;

根据下列SQL,再根据应用服务器主机名,可判断应用的连接数情况:

SELECT b.MACHINE, b.PROGRAM, COUNT (*)
FROM v$process a, v$session b

WHERE a.ADDR = b.PADDR AND b.USERNAME IS NOT NULL
ADN A.TYPE !='BACKGROUND'
and a.status in ('ACTIVE','INACTIVE')
GROUP BY b.MACHINE, b.PROGRAM
ORDER BY COUNT (*) DESC;

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI