V$LOCK視圖相關知識

1、V$LOCK視圖結構

列名 類型 字段說明
ADDR RAW(4 | 8) Address of lock state object
KADDR RAW(4|8) Address of lock
SID NUMBER 會話的sid,可以和v$session 關聯
TYPE VARCHAR2(2) 區分該鎖保護對象的類型(表4)
TM – DML enqueue
TX – Transaction enqueue
UL – User supplied
–我們主要關注TX和TM兩種類型的鎖
–UL鎖用戶自己定義的,一般很少會定義,基本不用關注
–其它均爲系統鎖,會很快自動釋放,不用關注
ID1
ID2
NUMBER ID1,ID2的取值含義根據type的取值而有所不同
對於TM 鎖
ID1表示被鎖定表的object_id 可以和dba_objects視圖關聯取得具體表信息,ID2 值爲0
對於TX 鎖
ID1以十進制數值表示該事務所佔用的回滾段號和事務槽slot number號,其組形式:
0xRRRRSSSS,RRRR=RBS/UNDO NUMBER,SSSS=SLOT NUMBER
ID2 以十進制數值表示環繞wrap的次數,即事務槽被重用的次數
LMODE NUMBER
  • 0 – none
  • 1 – null (NULL)
  • 2 – row-S (SS)
  • 3 – row-X (SX)
  • 4 – share (S)
  • 5 – S/Row-X (SSX)
  • 6 – exclusive (X)
  • 具體見表3
REQUEST NUMBER 同LMODE
–大於0時,表示當前會話被阻塞,其它會話佔有改鎖的模式
CTIME NUMBER
  • 已持有或者等待鎖的時間
BLOCK NUMBER
  • 是否阻塞其他會話鎖申請 1:阻塞 0:不阻塞


2、其它相關視圖說明

視圖名 描述 主要字段說明
v$session 查詢會話的信息和鎖的信息。 sid,serial#:表示會話信息。
program:表示會話的應用程序信息。
row_wait_obj#:表示等待的對象,和dba_objects中的object_id相對應。
lockwait :該會話等待的鎖的地址,與v$lock的kaddr對應.
v$session_wait 查詢等待的會話信息。 sid:表示持有鎖的會話信息。
Seconds_in_wait:表示等待持續的時間信息
Event:表示會話等待的事件,鎖等於enqueue
dba_locks 對v$lock的格式化視圖。 Session_id:和v$lock中的Sid對應。
Lock_type:和v$lock中的type對應。
Lock_ID1: 和v$lock中的ID1對應。
Mode_held,mode_requested:和v$lock中的lmode,request相對應。
v$locked_object 只包含DML的鎖信息,包括回滾段和會話信息。 Xidusn,xidslot,xidsqn:表示回滾段信息。和v$transaction相關聯。
Object_id:表示被鎖對象標識。
Session_id:表示持有鎖的會話信息。
Locked_mode:表示會話等待的鎖模式的信息,和v$lock中的lmode一致。

表3

鎖模式 鎖描述 解釋 SQL操作
0 none    
1 NULL Select
2 SS(Row-S) 行級共享鎖,其他對象只能查詢這些數據行 Select for update
Lock for update
Lock row share
3 SX(Row-X) 行級排它鎖,在提交前不允許做DML操作 Insert/update/Delete
Lock row share
4 S(Share) 共享鎖 Create index
Lock share
5 SSX(S/Row-X) 共享行級排它鎖 Lock share row exclusive
6 X(Exclusive) 排它鎖 Alter table
Drop able
Drop index
Truncate table
Lock exclusive

表4

System Type Description System Type Description
BL Buffer hash table instance NA..NZ Library cache pin instance (A..Z = namespace)
CF Control file schema global enqueue PF Password File
CI Cross-instance function invocation instance PI, PS Parallel operation
CU Cursor bind PR Process startup
DF datafile instance QA..QZ Row cache instance (A..Z = cache)
DL Direct loader parallel index create RT Redo thread global enqueue
DM Mount/startup db primary/secondary instance SC System change number instance
DR Distributed recovery process SM SMON
DX Distributed transaction entry SN Sequence number instance
FS File set SQ Sequence number enqueue
HW Space management operations on a specific segment SS Sort segment
IN Instance number ST Space transaction enqueue
IR Instance recovery serialization global enqueue SV Sequence number value
IS Instance state TA Generic enqueue
IV Library cache invalidation instance TS Temporary segment enqueue (ID2=0)
JQ Job queue TS New block allocation enqueue (ID2=1)
KK Thread kick TT Temporary table enqueue
LA .. LP Library cache lock instance lock (A..P = namespace) UN User name
MM Mount definition global enqueue US Undo segment DDL
MR Media recovery WL Being-written redo log instance
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章