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 |