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连接被强制终止
相关推荐
蒸蒸yyyyzwd3 小时前
cpp选手秋招学习笔记 day12
笔记·学习·oracle
oradh14 小时前
Oracle闪回技术操作总结
数据库·oracle·oracle闪回技术操作总结·oracle闪回·flashback技术
smilejingwei19 小时前
Trae+SQLazy 实践 SQL 国产化移植:Oracle => 达梦
数据库·sql·oracle
Irene19911 天前
当前用户查OWNER报错总结:在Oracle中,查询OWNER(或用户名/SCHEMA)报错,本质是权限不足,但错误的表现形式会根据具体场景而不同
oracle
lixora1 天前
Oracle Data Block 详细结构解析
oracle
Code额1 天前
Python asyncio 异步编程全套学习文档(零基础完整版)
python·学习·oracle·async·异步·asyncio
秋田君1 天前
【无标题】
数据库·oracle
JacksonMx1 天前
企业级幂等方案
数据库·spring boot·spring·oracle
Irene19911 天前
生产级探查脚本:数据探查 SQL 示例(无需DBA权限、跨Oracle版本(11g/19c)的表结构探查脚本方案)
oracle
—Miss. Z—2 天前
备份与恢复
数据库·oracle