分享一個自動殺根鎖(抓住TX鎖不釋放的SESSION)的指令碼
在OLTP系統中,特別是高併發環境下,要求事務儘量晚的鎖住資源(一般為一行要修改的記錄),儘量早的釋放資源(commit)。但有時應用程式的BUG或者其他原因,有一個SESSION總是不釋放資源,特別是鎖住核心帳戶這種表的一行記錄,可以在很短的時間內讓locked的SESSION暴漲,造成系統負載上升,SESSION上升,影響系統的穩定性。這時候以最快的速度找出根鎖(就是最初那個鎖住資源的SESSION)並KILL掉是最好的解決方法。以下指令碼是我開發的自動化殺根鎖的SHELL指令碼和儲存過程,好東西就要分享
程式包:
指令碼目的:
找出鎖的根,自動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
臨時檔案
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23250928/viewspace-1042526/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java 自動釋放鎖的幾種實現Java
- oracle的TM鎖、TX鎖Oracle
- 檢視鎖定的session資訊指令碼Session指令碼
- windows下處理kill session不被釋放的鎖WindowsSession
- 分享一個基於jQuery的鎖定表格行列的js指令碼。jQueryJS指令碼
- Oracle的TX鎖(行級鎖、事務鎖)Oracle
- 檢視過去的session鎖情況指令碼Session指令碼
- windows 不鎖屏vb指令碼Windows指令碼
- ORACLE TX鎖Oracle
- Oracle TX鎖的處理Oracle
- oracle的TM鎖、TX鎖知識完全普及Oracle
- 對TM鎖和TX鎖的簡單理解
- ZooKeeper 分散式鎖 Curator 原始碼 02:可重入鎖重複加鎖和鎖釋放分散式原始碼
- 檢視Oracle鎖並且釋放鎖Oracle
- TX鎖查詢
- 逐行分析AQS原始碼(2)——獨佔鎖的釋放AQS原始碼
- process不釋放,檢查指令碼指令碼
- 一個自動ftp的指令碼(轉)FTP指令碼
- 關於 TX 鎖的兩句sqlSQL
- Oracle鎖調查的指令碼Oracle指令碼
- iPhone或將根據地點自動解鎖iPhone
- Oracle中的Session kill不釋放問題OracleSession
- 一個自動生成oracle job的指令碼Oracle指令碼
- 顯示卡鎖算力和不鎖算力的區別 顯示卡鎖算力和不鎖算力的哪個好
- 日常運維之TX鎖處理(一)運維
- 逐行分析AQS原始碼(3)——共享鎖的獲取與釋放AQS原始碼
- 殺掉鎖死的程式
- TX鎖(Transaction Lock)分析 (zt)
- MySQL 的共享鎖和排它鎖以及自動提交MySql
- 分享一個自動編譯,打包,簽名 android apk 的小指令碼編譯AndroidAPK指令碼
- 【問答分享第一彈】MySQL鎖總結:MySQL行鎖、表鎖、排他鎖、共享鎖的特點MySql
- 轉載:深入淺出oracle鎖 釋放鎖---原理篇Oracle
- 產生TX鎖等待不同情形的分析
- oracle殺死鎖表的程式Oracle
- 分享一個自動傳輸歸檔到備庫並註冊的指令碼指令碼
- 一個自動生成awr報告的shell指令碼指令碼
- 自動檢查RAID 資訊的一個指令碼AI指令碼
- rman映像copy自動備份的一個指令碼指令碼