enq: DX - contention
enq: DX - contention 是分散式事務所使用的鎖。
select * from v$lock where type='DX'
發現
C0000001380D5D00 C0000001380D5D20 2833 DX 16 0 1 0 1121192 0
C0000001380E76C8 C0000001380E76E8 2234 DX 51 0 4 0 4150509 1
C0000001380E7B08 C0000001380E7B28 2784 DX 51 0 0 6 4150445 0
這些鎖的時間可不小啊,原來是2234堵住了2784,而且時間很久了,殺掉2234後,正常
不過 DX 這個鎖是如何發生的呢,做了一個小測試
資料庫A,資料庫B
資料庫A上有 dblinkB 連線到資料庫B
用plsql執行
Select * from tableB@dblinkb
當資料沒有全部顯示出來的時候,會發現
資料庫A上:
1) 產生了一個事務,需要commit 或者 rollback
2) 查詢v$lock 發現,當前session 有2個鎖
C0000000FE540D28 C0000000FE540D48 1068 DX 38 0 4 0 0 0
C0000000FC4AC0F8 C0000000FC4AC130 1068 TX 589828 22700 6 0 51 0
資料庫B上:
1) session 表中的 TADDR 欄位有值,是個事務,不過在v$transaction中查詢不到,不過可以在x$ktcxb 中找到
執行 create table action_test1 as select * from tableB@dblink
資料庫A上:
1) v$lock上該程式的鎖有
C0000000FE540D28 C0000000FE540D48 1069 DX 8 0 1 0 0 0
C0000000FCB9FDA8 C0000000FCB9FDE0 1069 TX 196641 20879 6 0 5 0
C0000000FC8356F8 C0000000FC835720 1069 TM 113886 0 3 0 5 0
還發現出現過:
C0000000FE540EF0 C0000000FE540F10 1069 FB 5 21422737 6 0 0 0
資料庫B上:
1) V$lock 中出現:
C0000001380D6860 C0000001380D6880 2897 DX 29 0 4 0 0 0
總結:
使用dblink的時候在本地和遠端資料庫上都會出現DX鎖,是分部式事務用到的,ID1的含義暫時不明,DX鎖的一般都是系統表,到底是鎖的什麼資源,也不知道
問題應該就是遠端資料庫透過dblink取資料,結果網路出問題導致事務一直沒有結束,DX沒有釋放,第2次執行的時候就一直等待DX資源,奇怪的是第2次執行的時候應該申請其他DX資源,為什麼會申請上次出錯的資源呢?
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/133835/viewspace-1004681/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 消除 enq: DX - contention 等待事件ENQ事件
- enq: DX – contention和inactive transaction branchENQ
- 資料庫出現很高的enq: DX - contention 等待資料庫ENQ
- enq: US - contentionENQ
- enq: HW - contentionENQ
- enq: TM - contentionENQ
- enq:TM contentionENQ
- enq: TS - contentionENQ
- zt_Oracle enq: TX contention 和 enq: TM contention 等待事件OracleENQ事件
- enq:TX - index contentionENQIndex
- enq: TX - index contentionENQIndex
- enq: TX - row lock contentionENQ
- 關於enq: US – contentionENQ
- enq: WF - contention等待事件ENQ事件
- enq: CF - contention 等待事件ENQ事件
- enq: TX - index contention等待ENQIndex
- enq: TS - contention 等待事件ENQ事件
- 等待事件之enq: HW - contention事件ENQ
- enq: SQ - contention" waits in RACENQAI
- 【故障解決】enq: PS - contentionENQ
- enq:TM-contention事件等待ENQ事件
- Oracle等待事件之enq: TM – contentionOracle事件ENQ
- 等待事件enq: TX - row lock contention事件ENQ
- oracle等待事件之enq: CF – contentionOracle事件ENQ
- 【等待事件】-enq: TX - row lock contention事件ENQ
- Metlink:Performance issues with enq: US - contentionORMENQ
- enq: TX - index contention基礎理論ENQIndex
- 故障排除 | enq:TX - index contention等待事件ENQIndex事件
- Troubleshooting 'enq: TX - index contention' WaitsENQIndexAI
- 奇異的enq: TX - row lock contentionENQ
- 等待事件enq TX row lock contention分析事件ENQ
- 如何診斷等待事件 enq: HW - contention事件ENQ
- enq: HW - contention 問題的處理ENQ
- 【MW】Drop Materialized View Hangs with 'Enq: JI - Contention'ZedViewENQ
- enq:SQ-contention / DFS lock handle(SV)ENQ
- 【效能調整】等待事件 enq: SQ - contention事件ENQ
- 如何解決enq: TX- index contentionENQIndex
- 事務上的等待事件 —— enq: UL - contention事件ENQ