smon程式互為死鎖案例--oracle一個bug處理
smon程式互為死鎖案例--oracle一個bug處理[@more@]以下這篇文章發表在我的blog上。
貼到這裡與大家共享。
=====================
環境:
OS: AIX 5.2
DB: oracle9206 RAC
兩個例項上面smon程式都在等待enqueue事件。從而導致部分使用者無法登陸,排序請求臨時表空間也不行。。。
接到客戶電話,說有些使用者無法登陸,掛在那裡,修改它的密碼也是掛在那裡。並且好多查詢結果都出不來。。
登上去檢查,發現smon程式在等待enqueue事件。所以引起了上面的現象。檢查v$lock
A節點:
12 TX 2752512 475202 6 0
12 TM 22 0 3 0
12 TM 18 0 3 0
12 TX 1441873 792576 0 6
B節點:
12 TX 1441873 792576 6 0
12 TM 22 0 3 0
12 TM 18 0 3 0
12 TX 2752512 475202 0 6
從這裡也可以發現,兩個例項之間發生死鎖了。
客戶說他前一天晚上重起過資料庫,重啟後也是一樣的。
檢查smon程式的sql語句:
select o.owner#,o.obj#,decode(o.linkname,null, decode(u.name,null,'SYS',u.name),o.remoteowner),
o.name,o.linkname,o.namespace,o.subname
from user$ u, obj$ o where u.user#(+)=o.owner# and o.type#=1
and not exists (select p_obj# from dependency$ where p_obj# = o.obj#)
order by o.obj# for update;
從SQL語句上看,應該是smon程式在清理obj$物件。
在metalink搜尋,發現oracle有個這樣的bug,導致互為死鎖。oracle提供了相應的補丁,但是沒有aix上面的版本。
現在由於兩個例項的smon程式都在清理obj$表格,從而導致了死鎖,如果禁止掉一個smon程式清理obj$表格,這個bug不就可以避免了嗎?
於是想起10052事件,其功能禁止smon程式清理obj$表。
event="10052 trace name context forever"
在其中一個例項上填加10052事件後,重啟這個例項後,一切正常。
貼到這裡與大家共享。
=====================
環境:
OS: AIX 5.2
DB: oracle9206 RAC
兩個例項上面smon程式都在等待enqueue事件。從而導致部分使用者無法登陸,排序請求臨時表空間也不行。。。
接到客戶電話,說有些使用者無法登陸,掛在那裡,修改它的密碼也是掛在那裡。並且好多查詢結果都出不來。。
登上去檢查,發現smon程式在等待enqueue事件。所以引起了上面的現象。檢查v$lock
A節點:
12 TX 2752512 475202 6 0
12 TM 22 0 3 0
12 TM 18 0 3 0
12 TX 1441873 792576 0 6
B節點:
12 TX 1441873 792576 6 0
12 TM 22 0 3 0
12 TM 18 0 3 0
12 TX 2752512 475202 0 6
從這裡也可以發現,兩個例項之間發生死鎖了。
客戶說他前一天晚上重起過資料庫,重啟後也是一樣的。
檢查smon程式的sql語句:
select o.owner#,o.obj#,decode(o.linkname,null, decode(u.name,null,'SYS',u.name),o.remoteowner),
o.name,o.linkname,o.namespace,o.subname
from user$ u, obj$ o where u.user#(+)=o.owner# and o.type#=1
and not exists (select p_obj# from dependency$ where p_obj# = o.obj#)
order by o.obj# for update;
從SQL語句上看,應該是smon程式在清理obj$物件。
在metalink搜尋,發現oracle有個這樣的bug,導致互為死鎖。oracle提供了相應的補丁,但是沒有aix上面的版本。
現在由於兩個例項的smon程式都在清理obj$表格,從而導致了死鎖,如果禁止掉一個smon程式清理obj$表格,這個bug不就可以避免了嗎?
於是想起10052事件,其功能禁止smon程式清理obj$表。
event="10052 trace name context forever"
在其中一個例項上填加10052事件後,重啟這個例項後,一切正常。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-899037/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Oracle】死鎖的產生與處理Oracle
- MySQL:Innodb 一個死鎖案例MySql
- Mysql如何處理死鎖MySql
- 檢視oracle死鎖程式並結束死鎖Oracle
- 記一個openwrt reboot非同步訊號處理死鎖問題boot非同步
- 如何處理執行緒死鎖執行緒
- Oracle TX鎖的處理Oracle
- 死鎖案例二
- 死鎖案例三
- 死鎖案例分析
- MySQL死鎖案例一(回滾導致死鎖)MySql
- 剖析6個MySQL死鎖案例的原因以及死鎖預防策略MySql
- 萬萬沒想到,一個 MongoDB.Driver 的 bug 導致 .NET5 程式死鎖!MongoDB
- GreatSQL 死鎖案例分析SQL
- APM RUEI processor處理程式hang死處理方法
- oracle的一個bugOracle
- 記一次Oracle死鎖/阻塞排查Oracle
- MySQL:一個死鎖分析 (未分析出來的死鎖)MySql
- 【MySQL】死鎖案例之六MySql
- 【MySQL】死鎖案例之七MySql
- 【MySQL】死鎖案例之八MySql
- MySQL死鎖案例分析一(先delete,再insert,導致死鎖)MySqldelete
- 作業系統(5) 死鎖的概念 死鎖產生的必要條件 死鎖的處理策略 預防死鎖 避免死鎖 死鎖的檢測和解除 銀行家演算法作業系統演算法
- Oracle死鎖一例(ORA-00060),鎖表導致的業務死鎖問題Oracle
- Oracle分散式事務典型案例處理Oracle分散式
- mysqlconnect bug 處理一例。MySql
- MySQL批量更新死鎖案例分析MySql
- 故障分析 | MySQL死鎖案例分析MySql
- 一次徹底講清如何處理mysql 的死鎖問題MySql
- MySQL死鎖案例二(自增列導致死鎖)MySql
- 線上BUG:MySQL死鎖分析實戰MySql
- 一次ORACLE分散式事務鎖異常處理分析Oracle分散式
- 作業系統4——處理機排程與死鎖作業系統
- oracle使用者鎖住、過期處理方式Oracle
- 如何寫一段死鎖程式碼
- SQL Server 資料庫查詢死鎖的處理步驟SQLServer資料庫
- 記錄一個cpu彪高的BUG處理--jvm調優JVM
- 處理生產bug
- 用個通俗的例子講一講死鎖