Oracle 动态视图1 V$LOCK

  v$lock显示数据库当前持有锁情况

Column Datatype Description
SID NUMBER 会话ID
TYPE VARCHAR2(2) 表示锁的类型。值包括TMTX,等
ID1 NUMBER

对于TM锁:ID1表示被锁定表的object_id 可以和dba_objects视图关联取得具体表信息;

对于TX锁:ID1以十进制数值表示该事务所占用的回滚段号和事务槽slot number号

ID2 NUMBER 对于TM锁:ID2 值为0;对于TX锁:ID2 以十进制数值表示事务槽被重用的次数
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)
REQUEST 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)
CTIME NUMBER 持有锁的时间
BLOCK NUMBER 是否正在阻塞其他会话锁申请 1:阻塞 0:不阻塞

示例展示:

会话1

 1 --查看当前会话1持有锁情况
 2 select sid,type,id1,id2,lmode,request,block 
 3 from v$lock
 4 where sid in (select sid from v$mystat where rownum=1);
 5 
 6 无记录
 7 
 8 --加锁
 9 select * from t1 for update ;
10 
11 --查看加锁后的v$lock
12 SQL> select sid,type,id1,id2,lmode,request,block 
13   2  from v$lock
14   3  where sid in (select sid from v$mystat where rownum=1);
15 
16        SID TY        ID1        ID2      LMODE    REQUEST      BLOCK
17 ---------- -- ---------- ---------- ---------- ---------- ----------
18        133 TM      53252          0          3          0          0
19        133 TX     196630        636          6          0          0
20 
21 --当前会话持有两种类型锁:TM(表级锁),TX(行级锁)。锁模式分别为:3,6。BLOCK为:0

会话2

 1 --开启会话2 
 2 --查看当前会话2持有锁情况
 3 select sid,type,id1,id2,lmode,request,block 
 4 from v$lock
 5 where sid=140;
 6 
 7 无记录
 8 
 9 --加锁
10 select * from t1 for update ;
11 
12 会话夯住了

切回会话1

 1 --切换的会话1 查看两个会话持锁状态
 2 SQL> select sid,type,id1,id2,lmode,request,block
 3   2  from v$lock
 4   3  where sid in (133,140);
 5 
 6        SID TYPE      ID1        ID2      LMODE    REQUEST      BLOCK
 7 ---------- -- ---------- ---------- ---------- ---------- ----------
 8        133 TX     196630        636          6          0          1
 9        133 TM      53252          0          3          0          0
10        140 TX     196630        636          0          6          0
11        140 TM      53252          0          3          0          0       
12 SQL> 
13 
14 --会话133: TYPE(tm) lmode(3) block(0)
15            TYPE(tx) lmode(6) block(1)  --在行级持有排它锁,并正在阻塞其它会话
16            
17 --会话140:TYPE(tm) lmode(3)   block(0)
18            TYPE(tx) request(6) block(0)  --正在申请行级排它锁 

相关锁的知识介绍:Oracle Lock 概述

原文地址:https://www.cnblogs.com/polestar/p/3334570.html