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

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

一、脚本功能

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

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

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

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

二、脚本用法

运行方式

[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

四、重要特点

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

  • ✅ 来自两个特定IP主机的连接

  • ✅ 使用JDBC Thin Client的连接

  • ✅ 状态为KILLED/ACTIVE/INACTIVE的所有会话

清理方式

  • 使用kill -9强制终止进程

  • 先显示提示信息,再执行kill

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

五、注意事项

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

  • 权限要求:需要操作系统kill权限

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

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

六、执行流程图示

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

总结

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

相关文章

  • oracle 指定类型和指定位数创建序列号的代码详解

    oracle 指定类型和指定位数创建序列号的代码详解

    这篇文章主要介绍了oracle 指定类型和指定位数创建序列号,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • Oracle数据库的使用及说明介绍Linux

    Oracle数据库的使用及说明介绍Linux

    这篇文章主要介绍了Oracle数据库的使用及说明Linux,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2026-03-03
  • Oracle实现某表随机抽取数据(随机性抽取)

    Oracle实现某表随机抽取数据(随机性抽取)

    这篇文章主要介绍了Oracle实现某表随机抽取数据(随机性抽取),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • oracle临时表空间无法释放的解决办法

    oracle临时表空间无法释放的解决办法

    Oracle临时表空间主要是用于数据库较大的临时排序用,在PGA分配的工作区空间不足以容纳排序数据时使用临时表空间,但是容易遇到oracle临时表空间无法释放的问题,所以本文给大家介绍了oracle临时表空间无法释放的解决办法,需要的朋友可以参考下
    2024-03-03
  • Linux下修改Oracle监听地址的方法

    Linux下修改Oracle监听地址的方法

    这篇文章主要介绍了Linux下修改Oracle监听地址的方法,需要的朋友可以参考下
    2017-10-10
  • Oracle数据库下载与安装的完整步骤

    Oracle数据库下载与安装的完整步骤

    这篇文章主要给大家介绍了关于Oracle数据库下载与安装的相关资料,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • oracle 存储过程、函数和触发器用法实例详解

    oracle 存储过程、函数和触发器用法实例详解

    这篇文章主要介绍了oracle 存储过程、函数和触发器用法,结合实例形式详细分析了oralce 存储过程、函数和触发器具体功能、原理、定义、使用方法及相关操作注意事项,需要的朋友可以参考下
    2020-02-02
  • CentOS8下安装oracle客户端完整(填坑)过程分享(推荐)

    CentOS8下安装oracle客户端完整(填坑)过程分享(推荐)

    这篇文章主要介绍了CentOS8下安装oracle客户端完整(填坑)过程分享,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • Oracle修改端口号之后无法启动的解决方案

    Oracle修改端口号之后无法启动的解决方案

    Oracle数据库更改端口后出现监听器无法启动的问题确实较为常见,但并非必然发生,这一问题通常源于​​配置错误或环境冲突​​,而非端口修改本身,以下是系统性解决方案,需要的朋友可以参考下
    2025-06-06
  • Oracle计算年龄的实用方法总结

    Oracle计算年龄的实用方法总结

    这篇文章主要给大家介绍了关于Oracle计算年龄的相关资料,在我们日常实际业务中,可能需要根据某人出生日期、身份证号码来实时计算年龄,需要的朋友可以参考下
    2023-09-09

最新评论