欢迎来到“四有青年”的博客

shell脚本之定期杀非活session连接

!/bin/bash

ORACLE_SID="testdb"
ORACLE_HOME="/u01/app/oracle/product/11gR2/db"

INACTIVE_TIMEOUT=60 # 非活动超时时间(秒)

设置Oracle环境变量

export ORACLE_SID
export ORACLE_HOME

连接到Oracle数据库

sqlplus -S /nolog >> /home/oracle/kill_session_output.log<<EOF
CONNECT / AS SYSDBA

-- 查询非活动会话并杀死超时的会话
SET SERVEROUTPUT ON
DECLARE
v_sid V$SESSION.SID%TYPE;
v_serial V$SESSION.SERIAL#%TYPE;

CURSOR c_sessions IS
SELECT SID, SERIAL#
FROM V\$SESSION
WHERE STATUS = 'INACTIVE';

BEGIN
FOR session IN c_sessions LOOP
v_sid := session.SID;
v_serial := session.SERIAL#;

EXECUTE IMMEDIATE 'ALTER SYSTEM KILL SESSION ''' || v_sid || ',' || v_serial || '''';
DBMS_OUTPUT.PUT_LINE('Killed session: SID=' || v_sid || ', SERIAL#=' || v_serial);
END LOOP;

END;
/
EXIT;
EOF

posted @   新社会四有青年  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤
点击右上角即可分享
微信分享提示