Oracle失效链接清理

1.查看失效的连接数

SELECT count(*) FROM gv$session WHERE inst_id = 1 and status = 'INACTIVE'

1

2.查看总连接

SELECT count(*) FROM gv$session WHERE inst_id = 1

在这里插入图片描述

3.查看失效链接

SELECT SID, SERIAL#,
	MODULE, STATUS
    FROM V$SESSION S
    WHERE S.USERNAME IS NOT NULL
    AND S.LAST_CALL_ET >= 60*60*2
    AND S.STATUS = 'INACTIVE'
ORDER BY SID DESC;

在这里插入图片描述

4.RAC模式下查看超过18小时的失效链接

SELECT SID, SERIAL#, INST_ID, MODULE,STATUS
    FROM gv$session S
    WHERE S.USERNAME IS NOT NULL
    AND S.LAST_CALL_ET >= 18*60*60
    AND S.STATUS = 'INACTIVE'
 ORDER BY INST_ID DESC

在这里插入图片描述

5.查看失效链接的sql语句

    SELECT s.SID, s.SERIAL#, 
    s.INST_ID, s.MODULE,s.STATUS,y.sql_text
    FROM gv$session S,v$sql y
    WHERE S.USERNAME IS NOT NULL
    AND S.LAST_CALL_ET >= 18 * 60*60
    AND S.STATUS = 'INACTIVE' AND s.sql_address = y.address
    ORDER BY INST_ID DESC

在这里插入图片描述

6.杀掉失效链接

ALTER SYSTEM KILL SESSION 's.SID, s.SERIAL#';--有回滚
alter system disconnect session 's.SID, s.SERIAL#';--更安全

7.查看失效链接的使用用户以及使用程序

然后可以登录使用程序的机器 kill -9 &spid(即查询出来的进程号spid)

select spid, osuser, s.program
from v$session s, v$process p,(	 SELECT SID
    FROM v$session S
    WHERE S.USERNAME IS NOT NULL
    AND S.LAST_CALL_ET >= 18 * 60*60
    AND S.STATUS = 'INACTIVE')c
where s.paddr = p.addr and s.sid =c.sid;

在这里插入图片描述
然后登录使用程序的机器 kill -9 &spid(即查询出来的进程号spid)

8.批量杀的sql拼接

SELECT 'alter system kill session ''' || s.sid || '' || ',' || s.serial# ||''';' 
    FROM gv$session S
    WHERE S.USERNAME IS NOT NULL
    AND S.LAST_CALL_ET >= 18 * 60*60
    AND S.STATUS = 'INACTIVE'

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值