Oracle-失效链接清理

1.查看失效的连接数
SELECT count(*) FROM gv$session WHERE inst_id = 1 and status = 'INACTIVE'

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'
posted @   深海蓝精灵  阅读(81)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示