碰見一個BLOCKING_SESSION顯示不正確的BUG

zhang41082發表於2019-01-05

REDHAT LINUX AS4U4上執行的3個節點的ORACLE 10.2.0.2系統,因為前臺應用的原因,會導致某些事務一直不提交也不回滾,所以這個事務影響的記錄就會出於加鎖狀態,從而導致後來的事務需要操作相同記錄的就會出現一個鎖等待事件,為了確定是哪個SESSION BLOCK其他事務,於是根據鎖等待時間最長的SESSION的SID去V$SESSION檢視中查詢BLOCKING_SESSION的值,得到是誰BLOCK了這個SESSION,以便找到問題的根源,然後奇怪的問題發生了,找到的這個BLOCKING_SESSION的值去V$LOCK中查詢,卻發現這個session根本沒有LOCK任何資源,而且,把這個SESSION殺掉之後,原先被BLOCK的SESSION還是處於BLOCK的狀態,看來是殺錯SESSION了。

感覺不可思議,ORACLE BUG碰見的多,碰見這種鬼問題首先想到的就是METALINK了,查了下,果然是個BUG,看看上面是怎麼說的吧。

[@more@]

Bug 5481650 GV$SESSION.blocking_session has incorrect value
This note gives a brief overview of bug 5481650.

Affects:
Product (Component) Oracle Server (Rdbms)
Range of versions believed to be affected Versions < 11
Versions confirmed as being affected 10.2.0.3

Platforms affected Generic (all / most platforms affected)

Fixed:
This issue is fixed in 10.2.0.4 (Server Patch Set)

Symptoms: Related To:
Wrong Results
(None Specified)
GV$SESSION
V$SESSION

Description
If "Blocker" and "Waiter" are on the same instance then "blocking_session"
in "GV$SESSION" is shown exactly 1 greater than the actual SID.


跟我碰見的一摸一樣,每次都是實際顯示的BLOCKING_SESSION比真正的BLOCKING_SESSION都大一個。
這個問題可以透過打PATCH來解決,因為沒有太多影響,暫時也不想動它。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25016/viewspace-1004888/,如需轉載,請註明出處,否則將追究法律責任。

相關文章