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连接被强制终止
相关推荐
海心焱1 天前
从零开始构建 AI 插件生态:深挖 MCP 如何打破 LLM 与本地数据的连接壁垒
jvm·人工智能·oracle
德彪稳坐倒骑驴1 天前
MySQL Oracle面试题
数据库·mysql·oracle
吕司1 天前
MySQL库的操作
数据库·mysql·oracle
dishugj1 天前
【Oracle】 rac的一些问题以及解决方案
数据库·oracle
eWidget1 天前
面向信创环境的Oracle兼容型数据库解决方案
数据库·oracle·kingbase·数据库平替用金仓·金仓数据库
熊文豪1 天前
关系数据库替换用金仓——Oracle兼容性深度解析
数据库·oracle·金仓数据库·电科金仓·kes
eWidget1 天前
面向Oracle生态的国产高兼容数据库解决方案
数据库·oracle·kingbase·数据库平替用金仓·金仓数据库
A懿轩A1 天前
【MySQL 数据库】MySQL 数据库核心概念详解:库、表、字段、主键与关系型模型一文读懂
数据库·mysql·oracle
Leon-Ning Liu1 天前
Oracle云基础设施文档-IP管理篇
oracle
蜜獾云2 天前
oracle查询所有的表名和注释
oracle