ORACLE DML鎖定機制
DML鎖
1、TX鎖(事務鎖)
Oracle中的鎖定過程如下:
(1)找到想鎖定的那一行的地址。
(2)到達那一行。
(3)鎖定這一行(如果這一行已經鎖定,則等待鎖住它的事務結束,除非使用了NOWAIT選項)。
V$TRANSACTION,對應每個活動事務都包含一個條目。
V$SESSION,顯示已經登入的會話。
V$LOCK,對應持有所有enqueue佇列鎖以及正在等待鎖的會話,都分別包含一個條目。這
並不是說,對於表中被會話鎖定的每一行,這個檢視中就有相應的一行。你不會看到這種情況。如前所述,不存在行級鎖的一個主列表。如果某個會話將EMP表中的一行鎖定,V$LOCK檢視中
就有對應這個會話的一行來指示這一事實。如果一個會話鎖定了EMP表中的數百萬行,V$LOCK檢視中對應這個會話還是隻有一行。這個檢視顯示了各個會話有哪些佇列鎖。
1、查詢特定使用者會話佇列資訊
selectusername,
v$lock.sid,
trunc(id1/power(2,16)) rbs,
bitand(id1,to_number('ffff','xxxx'))+0slot,
id2 seq,
lmode,
request
fromv$lock,v$session
wherev$lock.type='TX'
andv$lock.sid=v$session.sid
andv$session.username='WEIBIN';
(注:$LOCK表中的LMODE為6,REQUEST為0。如果在OracleServerReference手冊中檢視V$LOCK
表的定義,會發現LMODE=6是一個排他鎖。請求(REQUEST)值為0則意味著你沒有發出請求;
也就是說,你擁有這個鎖。)
selectXIDUSN,XIDSLOT,XIDSQN
fromv$transaction;
2、查詢哪個會話正阻塞了哪個會話
select(selectusernamefromv$sessionwheresid = a.sid) blocker,
a.sid,
'is blocking',
(selectusernamefromv$sessionwheresid = b.sid) blockee,
b.sid
fromv$lock a, v$lock b
wherea.block =1
andb.request >0
anda.id1 = b.id1
anda.id2 = b.id2;
2、TM鎖(DML Enqueue)鎖
TM鎖(TMlock)用於確保在修改表的內容時,表的結構不會改變。例如,如果你已經更新了一個表,
會得到這個表的一個TM鎖。這會防止另一個使用者在該表上執行DROP或ALTER命令。如果你有表的一個TM
鎖,而另一位使用者試圖在這個表上執行DDL,他就會得到以下錯誤訊息:
droptabledept
*
ERRORat line1:
ORA-00054:resourcebusyandacquirewithNOWAITspecified
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25964700/viewspace-700303/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle多粒度封鎖機制研究二(zt)Oracle
- Oracle Parallel DMLOracleParallel
- PHP 鎖機制PHP
- SQLite鎖機制SQLite
- Mysql鎖機制分析MySql
- 分散式鎖機制分散式
- 檢視ORACLE中鎖定物件Oracle物件
- synchronized鎖機制 之 程式碼塊鎖synchronized
- Mysql中的鎖機制——MyISAM表鎖MySql
- 資料庫鎖機制資料庫
- mysql myisam的鎖機制MySql
- Mysql各種鎖機制MySql
- MySQL效能優化(九)-- 鎖機制之行鎖MySql優化
- 鎖機制到加鎖的必要性
- MySQL 資料庫鎖定機制?這篇文章為你分析清楚~MySql資料庫
- CAS 無鎖式同步機制
- 【MySQL】MySQL中的鎖機制MySql
- MySQL InnoDB 中的鎖機制MySql
- 原創:oracle DML介紹與使用Oracle
- 執行緒鎖 -賣票機制執行緒
- MySql(三) MySql中的鎖機制MySql
- iOS——Objective C都有哪些鎖機制iOSObject
- 一文看懂Java鎖機制Java
- redis(10)事務和鎖機制Redis
- mysql 事務,鎖,隔離機制MySql
- mysql鎖機制 讀書筆記MySql筆記
- InnoDB儲存引擎鎖機制(二、 鎖的型別)儲存引擎型別
- 再談mysql鎖機制及原理—鎖的詮釋MySql
- 【鎖】Oracle鎖系列Oracle
- oracle全文索引之commit與DML操作Oracle索引MIT
- Oracle 檢視可以DML操作的條件Oracle
- 從自旋鎖、睡眠鎖、讀寫鎖到 Linux RCU 機制講解Linux
- InnoDB儲存引擎鎖機制(三、鎖的演算法)儲存引擎演算法
- [轉帖]SQL Server 鎖機制 悲觀鎖 樂觀鎖 實測解析SQLServer
- 圖解Janusgraph系列-併發安全:鎖機制(本地鎖+分散式鎖)分析圖解分散式
- InnoDB儲存引擎鎖機制(一、案例)儲存引擎
- Nginx accept鎖的機制和實現Nginx
- Java鎖機制瞭解一下Java
- SAP Fiori裡的兩種鎖機制