刪除列過程中,需要持有物件的鎖
SESSION 1:
alter table wxh_tbd drop column object_name;
SESSION 2:
alter session set events 'immediate trace name library_cache level 10';
檢視dump檔案,搜尋APOLLO.WXH_TBD,看看執行這個DDL過程中,會在表上加什麼型別的DDL鎖。
LIBRARY HANDLE:0x98a1cfc0 bid=21635 hid=96705483 lmd=S pmd=S sta=VALD
name=APOLLO.WXH_TBD
hash=a8a00ab51c4808690d3aacc096705483 idn=171692
tim=08-10-2011 13:18:02 kkkk-dddd-llll=0000-0701-0701
exc=0 ivc=0 ldc=4 slc=1 lct=23 pct=25
cbb=3 rpr=3 kdp=0 kep=0 bus=21 hus=21 dbg=0
dmtx=0x98a1d068(0, 20, 0) mtx=0x98a1d0d0(2505, 226, 0)
nsp=TABL(01) typ=TABL(02) llm=0 flg=KGHP/TIM/[00002800]
lwt=0x98a1d048[0x98a1d048,0x98a1d048]
pwt=0x98a1d028[0x98a1d028,0x98a1d028]
ref=0x98a1d058[0x8ab4b828,0x7c757258]
HANDLE REFERENCES:
reference handle flags
--------- --------- -------------------
8ab4b828 871d21c0 DEP[01]
timestamp=08-10-2011 13:18:02 whr=0
7c757258 b36001d0 DEP/INV[05]
timestamp=08-10-2011 13:17:23 whr=8
LOCK OWNERS:
lock user session count mode flags
-------- -------- -------- ----- ---- ------------------------
870d5030 ae6ba8e8 ae6ba8e8 1 S CNB/[01]-----------------------------加的S模式的library cache lock
PIN OWNERS:
pin user session lock count mode mask
-------- -------- -------- -------- ----- ---- ----
870d4f38 ae6ba8e8 ae6ba8e8 0 1 S 0701-----------------------加的S模式的library cache pin
LIBRARY OBJECT: 0x9226d0d8
flg=EXS/LOC[0005] pfl=[0000] ssta=VALD
DATA BLOCKS:
data# heap pointer status pins change whr
----- -------- -------- --------- ---- ------ ---
0 87a58228 9226d1b8 9226d0a8 I/P/A/-/- 0 NONE 00
8 9226d408 772dde50 772ddc38 I/P/A/-/- 1 NONE 00
9 84fc9d28 772dd1b8 772dcf30 I/P/A/-/- 1 NONE 00
10 84fc9df0 77290d58 772909f0 I/P/A/-/- 1 NONE 00
由於在表共享池物件上加的s模式的鎖,因此對這個表的查詢和修改不會賭在共享池物件上。也就是不會導致library cache lock/pin
但是無論如何,插入操作會被阻塞,因為這個操作在表上加了模式為6的TM鎖。而DML操作需要獲得表上模式為3的TM鎖,這兩個鎖是互斥的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22034023/viewspace-704582/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- create index...online操作過程中會申請持有哪些鎖Index
- SharePlex刪除不需要佇列佇列
- Rails中刪除資料物件AI物件
- iOS 中的 block 是如何持有物件的iOSBloC物件
- 刪除私有dblink的儲存過程儲存過程
- 儲存過程誤刪除的恢復儲存過程
- 快速刪除excel中的空行和列Excel
- MySQL超大表刪除資料過程MySql
- Android解析WindowManagerService(三)Window的刪除過程Android
- [ standby db ] windows下備庫的刪除過程Windows
- 刪除排序陣列中的重複項排序陣列
- js刪除陣列中重複的元素JS陣列
- js刪除陣列中的重複元素JS陣列
- js刪除陣列元素中的指定值JS陣列
- PHP從陣列中刪除元素的方法PHP陣列
- JS] JS 之刪除陣列中的元素JS陣列
- 刪除陣列中的元素(連結串列)陣列
- 批量刪除死鎖
- 從Redis中刪除大集合物件的方法Redis物件
- python雨滴譜刪除不需要的粒徑列值Python
- 【原始碼學習】window 的刪除及更新過程原始碼
- js如何刪除陣列中重複的值JS陣列
- 刪除排序陣列中的重複數字排序陣列
- javascript如何刪除陣列中重複的項JavaScript陣列
- 刪除有序陣列中的重複項 II陣列
- JAVA物件分析之偏向鎖、輕量級鎖、重量級鎖升級過程Java物件
- 快速刪除oracle物件Oracle物件
- mssql sqlserver 批量刪除所有儲存過程的方法分享SQLServer儲存過程
- [ standby db ] windows下備庫的刪除過程 -- 【轉發】Windows
- 刪除MSSQL危險儲存過程的程式碼(轉)SQL儲存過程
- oracle儲存過程中的陣列Oracle儲存過程陣列
- 不同的SQL語句執行時需要申請並持有對應的鎖SQL
- 【原創】通過資料字典操作刪除表的列
- 題目:刪除排序陣列中的重複項排序陣列
- js如何刪除和新增table中的行和列JS
- 刪除陣列中的指定元素例項程式碼陣列
- javascript刪除陣列中的重複元素程式碼JavaScript陣列
- c#刪除有序陣列中的重複項C#陣列