Oracle会话清理脚本用法及解析说明
一、脚本功能
清理Oracle数据库指定会话的批处理工具,主要用于:
清理特定客户端的异常会话
批量终止来自两个指定主机的JDBC连接
释放被占用的数据库资源
二、脚本用法
运行方式
[oracle@vvml-yz-oracle~]$ ./kill.sh
一句话执行效果
自动查找并强制终止来自vvml-tx-vv-comment和vvml-tx-vv-security主机的所有JDBC客户端连接。
三、脚本解析
1. kill.sh(主控制脚本)
#!/bin/bash source ~/.bash_profile # 加载Oracle环境变量 sqlplus -s / as sysdba @generate_os_kill_commands.sql > os_kill_commands.sh # 生成kill命令 chmod +x os_kill_commands.sh # 添加执行权限 ./os_kill_commands.sh # 执行清理
2. generate_os_kill_commands.sql(命令生成脚本)
-- 核心查询:生成操作系统kill命令
SELECT
'echo "Killing ' || s.sid || ',' || s.serial# || ' - PID: ' || p.spid || '" && ' ||
'kill -9 ' || p.spid || ' # ' || s.machine || ' - ' || s.status
FROM v$session s, v$process p
WHERE s.paddr = p.addr -- 关联会话和操作系统进程
AND s.machine IN ('vvml-tx-vv-comment.10.10.10.1', 'vvml-tx-vv-security.10.10.10.2') -- 只处理这两个主机
AND s.program = 'JDBC Thin Client' -- 只清理JDBC连接
AND s.status IN ('KILLED', 'ACTIVE', 'INACTIVE') -- 三种状态都清理
ORDER BY s.machine, s.last_call_et DESC;3. 生成的清理脚本示例
# os_kill_commands.sh 内容示例: echo "Killing 123,45678 - PID: 78901" && kill -9 78901 # vvml-tx-vv-comment.10.10.10.1 - ACTIVE echo "Killing 234,56789 - PID: 89012" && kill -9 89012 # vvml-tx-vv-security.10.10.10.2 - INACTIVE
四、重要特点
清理范围(会终止哪些连接)
✅ 来自两个特定IP主机的连接
✅ 使用JDBC Thin Client的连接
✅ 状态为KILLED/ACTIVE/INACTIVE的所有会话
清理方式
使用
kill -9强制终止进程先显示提示信息,再执行kill
按主机和空闲时间排序清理
五、注意事项
强制清理:使用
kill -9,不优雅但彻底权限要求:需要操作系统kill权限
影响范围:会清理所有符合条件的连接,无二次确认
适用场景:紧急清理、维护期间使用
六、执行流程图示
运行kill.sh
↓
加载Oracle环境
↓
执行SQL生成kill命令
↓
创建可执行脚本
↓
自动执行清理
↓
所有指定主机的JDBC连接被强制终止总结
到此这篇关于Oracle会话清理脚本用法及解析说明的文章就介绍到这了,更多相关Oracle会话清理脚本内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
CentOS8下安装oracle客户端完整(填坑)过程分享(推荐)
这篇文章主要介绍了CentOS8下安装oracle客户端完整(填坑)过程分享,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下2019-12-12


最新评论