enable table lock 的enqueue等待
對單個表的enable table lock的等待盡然是TX等待,這個等待要等待資料庫中的所有在其命令執行以前的事務全部完成後才能結束。
ALTER TABLE test2 DISABLE TABLE LOCK;
SESSION 1
INSERT INTO test1 SELECT * FROM test1 WHERE ROWNUM=1
SESSION 2
INSERT INTO test1 SELECT * FROM test1 WHERE ROWNUM=1
SESSION 3
ALTER TABLE test2 ENABLE TABLE LOCK;
該語句卡住
-------------------------------------------------------------------------------------------------------
SYS@SOURCE10 > select * from v$lock;
ADDR KADDR SID TY ID1 ID2 LMODE REQUEST CTIME BLOCK
-------- -------- ---------- -- ---------- ---------- ---------- ---------- ---------- ----------
30434224 30434238 165 XR 4 0 1 0 62272 0
30434280 30434294 165 CF 0 0 2 0 62263 0
30434338 3043434C 165 RS 25 1 2 0 62260 0
30434394 304343A8 167 PW 1 0 3 0 62255 0
304343F0 30434404 166 RT 1 0 6 0 62260 0
3043444C 30434460 139 TX 131110 817 0 4 3 0
30434560 30434574 167 MR 1 0 4 0 62257 0
304345BC 304345D0 167 MR 3 0 4 0 62257 0
30434618 3043462C 167 MR 5 0 4 0 62257 0
30434674 30434688 167 MR 6 0 4 0 62257 0
304346D0 304346E4 167 MR 7 0 4 0 62257 0
3043472C 30434740 167 MR 201 0 4 0 62257 0
304347E4 304347F8 164 TS 3 1 3 0 62251 0
2F9C6550 2F9C6568 145 TM 13753 0 3 0 162 0
2F9C65FC 2F9C6614 143 TM 13753 0 3 0 162 0
2FA04690 2FA046B4 145 TX 131110 817 6 0 162 1
2FA39400 2FA39424 143 TX 327700 835 6 0 162 0
-------------------------------------------------------------------------------------------------------
SESSION 1
commit;
-------------------------------------------------------------------------------------------------------
SYS@SOURCE10 > select * from v$lock;
ADDR KADDR SID TY ID1 ID2 LMODE REQUEST CTIME BLOCK
-------- -------- ---------- -- ---------- ---------- ---------- ---------- ---------- ----------
30434224 30434238 165 XR 4 0 1 0 62353 0
30434280 30434294 165 CF 0 0 2 0 62344 0
30434338 3043434C 165 RS 25 1 2 0 62341 0
30434394 304343A8 167 PW 1 0 3 0 62336 0
304343F0 30434404 166 RT 1 0 6 0 62341 0
3043444C 30434460 139 TX 327700 835 0 4 3 0
30434560 30434574 167 MR 1 0 4 0 62338 0
304345BC 304345D0 167 MR 3 0 4 0 62338 0
30434618 3043462C 167 MR 5 0 4 0 62338 0
30434674 30434688 167 MR 6 0 4 0 62338 0
304346D0 304346E4 167 MR 7 0 4 0 62338 0
3043472C 30434740 167 MR 201 0 4 0 62338 0
304347E4 304347F8 164 TS 3 1 3 0 62332 0
2F9C65FC 2F9C6614 143 TM 13753 0 3 0 243 0
2FA39400 2FA39424 143 TX 327700 835 6 0 243 1
-------------------------------------------------------------------------------------------------------
SESSION 3 繼續HANG住
SESSION 2
commit;
SESSION 3 釋放
--------------------------------------------------------------------------------------------------------
可以測試,SESSION 3執行ENABLE TABLE LOCK後的事務不會繼續鎖住該語句,這個習慣和SAVEPOINT的很相似
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8242091/viewspace-611532/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORA-25307 ENQUEUE RATE TOO HIGH. ENABLE FLOW CONTROLENQ
- mutex,latch,lock,enqueue hash chains latch基礎概念MutexENQAI
- latch:library cache lock等待事件事件
- LightDB/PostgreSQL等待事件 Lock transactionidSQL事件
- [20190522]DISABLE TABLE LOCK.txt
- 等待事件enq: TX - row lock contention事件ENQ
- Cell smart table scan等待事件事件
- Lock物件Condition介面實現等待/通知物件
- MySQL新增索引偶遇waiting for table metadata lockMySql索引AI
- [20190524]DISABLE TABLE LOCK(12c).txt
- [20190530]DISABLE TABLE LOCK(10g).txt
- GaussDB資料庫SQL系列-LOCK TABLE資料庫SQL
- MySQL DDL Waiting for table metadata lock 解決MySqlAI
- 【TUNE_ORACLE】等待事件之“library cache lock”Oracle事件
- Oracle Enqueue WaitsOracleENQAI
- oracle enqueue(zt)OracleENQ
- oracle enqueue typeOracleENQ
- 金倉資料庫KingbaseES等待事件之LWLock lock_manager資料庫事件
- What is the "WF - Contention'' Enqueue ?ENQ
- 模擬mode=4 and name='TX'的enqueueENQ
- Oracle 11g 密碼延遲認證與 library cache lock 等待Oracle密碼
- [20240827]分析為什麼出現library cache lock等待事件2.txt事件
- [20240828]分析為什麼出現library cache lock等待事件5.txt事件
- Spring中Enable*功能的使用Spring
- 當刪除oracle資料庫user時發生row cache lock 等待事件Oracle資料庫事件
- oracle ENABLE=BROKENOracle
- SpringBoot開發自己的@Enable功能Spring Boot
- enable_index_filterIndexFilter
- FSM:Enable shift register
- Spring Boot Enable* 的原理與實踐Spring Boot
- 【selenium】強制等待,隱式等待,顯式等待
- Selenium的等待操作
- 【ASK_ORACLE】Row Cache Enqueue鎖之概念篇OracleENQ
- Selenium 隱式等待與顯示等待的選擇
- RuntimeWarning: Enable tracemalloc to get the object allocation tracebackObject
- selenium(7)強制等待,顯式等待和隱式等待。
- create table,show tables,describe table,DROP TABLE,ALTER TABLE ,怎麼使用?
- Lock 鎖
- MySQL中的Statistics等待MySql