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连接被强制终止
相关推荐
数据库生产实战2 小时前
Oracle的_segment_count和3个event对高并发事务与索引性能的影响分析
数据库·oracle
小Mie不吃饭3 小时前
2025 Oracle小白零基础到入门的学习路线
数据库·oracle
麒qiqi3 小时前
SQLite3 数据库
数据库·oracle
越甲八千8 小时前
SQL注入
数据库·sql·oracle
爱潜水的小L8 小时前
自学嵌入式day42,html
数据库·oracle·html
夜光小兔纸9 小时前
Oracle 表新增 ID RAW(16) 字段并填充历史数据
数据库·sql·oracle
秋深枫叶红10 小时前
嵌入式第四十三篇——数据库
linux·数据库·学习·oracle
robinson198820 小时前
验证崖山数据库标量子查询是否带有CACHE功能
数据库·oracle·cache·自定义函数·崖山·标量子查询
廋到被风吹走1 天前
【数据库】【Oracle】SQL基础
数据库·sql·oracle
曹牧1 天前
Oracle统计每日发生次数
数据库·oracle