oracle

关注公众号 jb51net

关闭
首页 > 数据库 > oracle > Oracle会话清理脚本

Oracle会话清理脚本用法及解析说明

作者:wzy0623

在Oracle数据库中会话是指与数据库建立连接的用户进程,有时候我们可能需要终止或杀掉某个会话,以释放资源或解决特定的问题,这篇文章主要介绍了Oracle会话清理脚本用法及解析说明的相关资料,需要的朋友可以参考下

一、脚本功能

清理Oracle数据库指定会话的批处理工具,主要用于:

二、脚本用法

运行方式

[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

四、重要特点

清理范围(会终止哪些连接)

清理方式

五、注意事项

六、执行流程图示

运行kill.sh 
    ↓
加载Oracle环境 
    ↓
执行SQL生成kill命令 
    ↓
创建可执行脚本 
    ↓
自动执行清理
    ↓
所有指定主机的JDBC连接被强制终止

总结

到此这篇关于Oracle会话清理脚本用法及解析说明的文章就介绍到这了,更多相关Oracle会话清理脚本内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文