加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 百科 > 正文

Oracle inactive session的清理

发布时间:2020-12-30 17:28:29 所属栏目:百科 来源:网络整理
导读: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 处于此状态的会话,表示正在

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 NULLADN A.TYPE !=‘BACKGROUND‘and a.status in (‘ACTIVE‘,‘INACTIVE‘)GROUP BY b.MACHINE,b.PROGRAMORDER BY COUNT (*) DESC;

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读