Oracle会话清理脚本简明说明

目录

一、脚本功能

二、脚本用法

运行方式

一句话执行效果

三、脚本解析

[1. kill.sh(主控制脚本)](#1. kill.sh(主控制脚本))

[2. generate_os_kill_commands.sql(命令生成脚本)](#2. generate_os_kill_commands.sql(命令生成脚本))

[3. 生成的清理脚本示例](#3. 生成的清理脚本示例)

四、重要特点

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

清理方式

五、注意事项

六、执行流程图示


一、脚本功能

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

  • 清理特定客户端的异常会话

  • 批量终止来自两个指定主机的JDBC连接

  • 释放被占用的数据库资源

二、脚本用法

运行方式

bash

复制代码
[oracle@vvml-yz-oracle~]$ ./kill.sh

一句话执行效果

自动查找并强制终止来自vvml-tx-vv-commentvvml-tx-vv-security主机的所有JDBC客户端连接。

三、脚本解析

1. kill.sh(主控制脚本)

bash

复制代码
#!/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(命令生成脚本)

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. 生成的清理脚本示例

bash

复制代码
# 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

  • 按主机和空闲时间排序清理

五、注意事项

  1. 强制清理 :使用kill -9,不优雅但彻底

  2. 权限要求:需要操作系统kill权限

  3. 影响范围:会清理所有符合条件的连接,无二次确认

  4. 适用场景:紧急清理、维护期间使用

六、执行流程图示

text

复制代码
运行kill.sh 
    ↓
加载Oracle环境 
    ↓
执行SQL生成kill命令 
    ↓
创建可执行脚本 
    ↓
自动执行清理
    ↓
所有指定主机的JDBC连接被强制终止
相关推荐
火山上的企鹅20 小时前
Codex实战:APP远程升级服务搭建(三)后台管理页面(APK 上传、版本管理、多应用页签)
服务器·网络·数据库·oracle·qgc
放下华子我只抽RuiKe51 天前
FastAPI 全栈后端(三):数据库与 ORM
前端·数据库·react.js·oracle·性能优化·前端框架·fastapi
oyyanghh1 天前
从Cursor到TRAE的三周vibe coding体验对比
数据库·oracle
Bert.Cai1 天前
Oracle CONCAT函数详解
数据库·oracle
tiancaijiben1 天前
阿里云云备份(Cloud Backup)全量对接与使用指南
数据库·oracle
李白的天不白1 天前
数据库的CEUD
数据库·sql·oracle
山峰哥1 天前
从全表扫描到覆盖索引:我是怎么干掉慢查询的
数据库·sql·oracle·性能优化·编辑器·深度优先
睡不醒男孩0308232 天前
自建 Prometheus+Grafana 与 CLUP 深度监控 PG 集群有什么区别?
数据库·oracle
德迅云安全-小潘2 天前
网站遭遇SQL注入攻击?应急处置、漏洞修复与长效防御完整方案
网络·sql·oracle
swordbob2 天前
MySQL和Oracle关于读未提交的区别
数据库·mysql·oracle