时间:2021-07-01 10:21:17 帮助过:27人阅读
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 处于此状态的会话,表示正在执行,处于活动状态。
- <code> 官方文档说明:
- 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.</code>
(2)killed处于此状态的会话,被标注为删除,表示出现了错误,正在回滚。
- <code> 当然,也是占用系统资源的。还有一点就是,killed的状态一般会持续较长时间,而且用windows下的工具pl/sql developer来kill掉,是不管用的,要用命令:alter system kill session ‘sid,serial#‘ ;</code>
(3)inactive 处于此状态的会话表示不是正在执行的
- <code> 该状态处于等待操作(即等待需要执行的SQL语句),通常当DML语句已经完成。 但连接没有释放,这个可能是程序中没有释放,如果是使用中间件来连接的话,也可能是中间件的配置或者是bug 导致。
- inactive对数据库本身没有什么影响,但是如果程序没有及时commit,那么就会造成占用过多会话。容易是DB 的session 达到极限值。</code>
解决方法:
1 SQLNET.EXPIRE_TIME (适当设置大小)
2 alter profile default limit idle_time 5;
根据下列SQL,再根据应用服务器主机名,可判断应用的连接数情况:
- <code>SELECT b.MACHINE, b.PROGRAM, COUNT (*)
- FROM v$process a, v$session b</code>
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;
Oracle inactive session的清理
标签:sql语句 rar exp sni 清理 解决方法 cached add any