分享一个自动杀根锁(抓住TX锁不释放的SESSION)的脚本

在OLTP系统中,特别是高并发环境下,要求事务尽量晚的锁住资源(一般为一行要修改的记录),尽量早的释放资源(commit)。但有时应用程序的BUG或者其他原因,有一个SESSION总是不释放资源,特别是锁住核心帐户这种表的一行记录,可以在很短的时间内让locked的SESSION暴涨,造成系统负载上升,SESSION上升,影响系统的稳定性。这时候以最快的速度找出根锁(就是最初那个锁住资源的SESSION)并KILL掉是最好的解决方法。以下脚本是我开发的自动化杀根锁的SHELL脚本和存储过程,好东西就要分享

程序包:

monitor_kill_rootlock.zip

脚本目的:

找出锁的根,自动KILL掉,适用于单节点和RAC

特点:
自动找出要KILL掉的根锁(ROOTLOCK)
所有LOCKED和KILLED_ROOTLOCK都有记录
并行运行,前一个没有运行完成后一个不会自动启动

初始化:
在sqlplus中运行pkg_mail_tools.sql,生成发送EMAIL的存储过程,注意要改一下存储过程中的邮件服务器的IP和端口,如果不想发送则把monitor_kill_rootlock.sh脚本中发送的几命令去掉
使用table_create.sql创建表
在SYS用户创建存储过程prc_monitor_kill_rootlock.sql
在操作系统oracle中创建shell脚本monitor_kill_rootlock.sh
把monitor_kill_rootlock.sh放入crontab中运行

表说明:
MONITOR_KILL_ROOTLOCK_CONF
配置文件,各值说明,注意ID 101-199只能用于节点的IP
ALERT LOCK NUMBER 数据库有多少TX锁开始KILL
RAC NODE NUMBER 节点数,默认3节点
LOCAL HOST IP 脚本布置在哪个主机上,主要是RAC环境要注意
101 1 节点一的IP
102 2 节点二的IP
103 3 节点三的IP
如果多于3个节点,可以再加,例如节点4
104 4 节点四的IP

MONITOR_KILL_ROOTLOCK_CUR
每次运行都会先清空,再插入最新的锁详细信息,用于分析

MONITOR_KILL_ROOTLOCK_LOG
历史日志文件

MONITOR_KILL_ROOTLOCK_TEMP
临时文件

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23250928/viewspace-1042526/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23250928/viewspace-1042526/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值