v$lock 视图说明

ADDR  
Address of lock state object 

KADDR  
Address of lock 

Lock Type  
System Type  
BL Buffer hash table instance 
CF Control file schema global enqueue 
CI Cross-instance function invocation instance 
CU Cursor bind 
DF Data file instance 
DL Direct loader parallel index create 
DM Mount/startup db primary/secondary instance 
DR Distributed recovery process 
DX Distributed transaction entry 
FS File set 
HW Space management operations on a specific segment 
IN Instance number 
IR Instance recovery serialization global enqueue 
IS Instance state 
IV Library cache invalidation instance 
JQ Job queue 
KK Thread kick 
LA .. LP Library cache lock instance lock (A..P = namespace) 
MM Mount definition global enqueue 
MR Media recovery 
NA..NZ Library cache pin instance (A..Z = namespace) 
PF Password File 
PI, PS Parallel operation 
PR Process startup 
QA..QZ Row cache instance (A..Z = cache) 
RT Redo thread global enqueue 
SC System change number instance 
SM SMON 
SN Sequence number instance 
SQ Sequence number enqueue 
SS Sort segment 
ST Space transaction enqueue 
SV Sequence number value 
TA Generic enqueue 
TS Temporary segment enqueue (ID2=0) 
TS New block allocation enqueue (ID2=1) 
TT Temporary table enqueue 
UN User name 
US Undo segment DDL 
WL Being-written redo log instance 

User Type  
TX --- Transaction 
TM --- Table Manipulate 
UL --- PL/SQL USER LOCK 

lmode(Lock mode)  
Lock mode in which the session holds the lock: 
0 - none 
1 - null (NULL) 
2 - row-S (SS) 
3 - row-X (SX) 
4 - share (S) 
5 - S/Row-X (SSX) 
6 - exclusive (X) 

request  
Lock mode in which the process requests the lock: 
0 - none 
1 - null (NULL) 
2 - row-S (SS) 
3 - row-X (SX) 
4 - share (S) 
5 - S/Row-X (SSX) 
6 - exclusive (X) 

Block  
0 --- Not blocking any other processes 
1 --- This lock blocks other processes 
2 --- Global
列名 类型 字段说明
ADDR RAW(4|8) Address of lock state object
KADDR RAW(4|8) Address of lock
SID NUMBER 会话的sid,能够和v$session 关联
TYPE VARCHAR2(2) 锁保护对象的类型见上面
TM – DML enqueue
TX – Transaction enqueue
UL – User supplied
更多时候只须要关注TX和TM两种类型的锁
UL锁用户本身定义的,通常不多会定义,不多关注
其它均为系统锁,会很快自动释放,不用关注
ID1 NUMBER ID1,ID2的取值含义根据type的取值而有所不一样
ID2 对于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、无
一、NULL,能够某些状况下,如分布式数据库的查询会产生此锁。
二、SS,表结构共享锁
三、SX,表结构共享锁+被操做的记录的排它锁
四、S, 表结构共享锁+全部记录共享锁
五、SRX 表结构共享锁+全部记录排它锁
六、X   表结构排它锁+全部记录排它锁

如下为补充上面 摘自:http://www.itpub.net/thread-940126-1-1.html
    2   SS, 表结构共享+加上部分数据共享.虽然有人说,ORACLE里,数据没有S状态,但我仍是愿意这样理解:
         第1个S表明表结构共享.
         第2个表明表里的数据共享.
         你能够想象一下,当往子表里增长纪录时,主表的相关主键是否是得处于共享模式.
    3    SX,   用于DML操做,第1个S表明表结构共享,第2个表明表里被操做的数据独占.
    4    S, 表明表结构+表里的数据都是处于共享模式.当对表建立索引时,在建立期间,表处于这种模式.
    5    SRX=S(4)+SX(3),
    6    X, 删除表是会用上.
REQUEST NUMBER 同上LMODE
大于0时,表示当前会话被阻塞,其它会话占有改锁的模式
CTIME NUMBER 已持有或者等待锁的时间
BLOCK NUMBER 是否阻塞其余会话锁申请 2:Global  1:阻塞  0:不阻塞



相关视图html

视图名 描述 主要字段说明
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一致。

 

模式 锁定的SQL 排斥的模式 容许的DML
2 lock table t in row share mode; 6 select,insert,update,delete,for update
3 lock table t in row exclusive mode; 4,5,6 select,insert,update, delete,for update
4 lock table t in share mode; 3,5,6 select
5 lock table t in share row exclusive mode; 3,4,5,6 select
6 lock table t in exclusive mode; 2,3,4,5,6 select
相关文章
相关标签/搜索