V$LOCK视图的介绍和使用

1.官方V$lock view 的explain:

V$LOCK

This view lists the locks currently held by the Oracle Database and outstanding requests for a lock or latch.

Column Datatype Description 
ADDR RAW(4 | 8) Address of lock state object 
KADDR RAW(4 | 8) Address of lock 
SID NUMBER Identifier for session holding or acquiring the lock 
TYPE VARCHAR2(2) Type of user or system lock 
The locks on the user types are obtained by user applications. Any process that is blocking others is likely to be holding one of these locks. The user type locks are:

TM - DML enqueue

TX - Transaction enqueue

UL - User supplied

The locks on the system types are held for extremely short periods of time. The system type locks are listed in Table 6-1.
 
ID1 NUMBER Lock identifier #1 (depends on type) 
ID2 NUMBER Lock identifier #2 (depends on type) 
LMODE NUMBER 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 NUMBER 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)
 
CTIME NUMBER Time since current mode was granted 
BLOCK NUMBER A value of either 0 or 1, depending on whether or not the lock in question is the blocker.

2.示例

--执行如下statement:

SQL> UPDATE test_zhp_061901 SET c1=111;
 
3 rows updated
 
--另一个session中执行
SQL> UPDATE test_zhp_061901 SET c1=222;
(一直等待,说明该session被阻塞)

--查询那个session阻塞了那个session:
SQL> SELECT a.sid,b.sid FROM v$lock a ,v$lock b
  2  WHERE b.id1=a.id1 AND a.id2=b.id2
  3  AND a.sid<>b.sid
  4  AND b.request<>0
  5  /
 
       SID        SID
---------- ----------
      4048       4017
 
说明session 4048阻塞了session 4017

--分别查看两个session holding 什么锁:
SQL> select * from v$lock where sid=4048;
 
ADDR         KADDR              SID TYPE        ID1        ID2      LMODE    REQUEST      CTIME      BLOCK
---------------- ---------------- ---------- ---- ---------- ---------- ---------- ---------- ---------- ----------
C00000040681F928 C00000040681F950       4048 TM     233121          0          3          0        112          2
C000000403E025A0 C000000403E02728       4048 TX    2031641     689835          6          0        112          1
 
session 4048 持有对象233121上的TM锁,锁的模式是3( row-X (SX) ),
同时session 4048 持有TX锁,锁的模式是6( exclusive (X) ),REQUEST为0表示该session没有请求锁,
也就是说该session持有锁(表明该session是阻塞者:阻塞其他session的session)
SQL> select * from v$lock where sid=4017;

 
ADDR         KADDR              SID TYPE        ID1        ID2      LMODE    REQUEST      CTIME      BLOCK
---------------- ---------------- ---------- ---- ---------- ---------- ---------- ---------- ---------- ----------
C00000041C0D53C0 C00000041C0D53E0       4017 TX    2031641     689835          0          6        118          0
C00000040681FF28 C00000040681FF50       4017 TM     233121          0          3          0        118          2
 
session 4017 持有对象233121上的TM锁,锁的模式是3( row-X (SX) ),
同时session 4017没有持有TX锁,锁的类型是0( none ) 表面该session 等待持有TX
锁,也就是说该session被阻塞,同时可以看到TX锁对应的REQUEST=6 表明该
SESSION正在请求一个模式为6( exclusive (X) )的锁,也就是说该SESSION是
被阻塞者(被其他SESSION阻塞的SESSION)

SQL> select object_id,object_name,object_type from all_objects where object_id=233121;
 
 OBJECT_ID OBJECT_NAME         OBJECT_TYPE
---------- ------------------------------ -------------------
    233121 TEST_ZHP_061901   TABLE


转自:http://www.cnblogs.com/rootq/articles/1147450.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值