ITPub博客

首页 > 数据库 > Oracle > v$lock中block的含义

v$lock中block的含义

原创 Oracle 作者:shilei1 时间:2014-06-07 05:20:33 0 删除 编辑

v$lock的block列表明的是这个锁是否阻塞了其它的锁
block常见的取值有3个:
0 ->没有阻塞 block=0不是说没有锁,它表明的意思是它的锁占用并没有阻碍别人。也就是我占着这个锁资源,我也没妨碍你操作这块资源,这与锁类型有关。v$lock中并不是所有的id1都表示object_id,这也与锁类型有关。只有锁类型为'TM'时,id1才表示object_id,再例如当锁类型为'TS'时,此时的id1表示的是TS$的TS#这列。


1 ->正在阻塞,此时可以用如下的语句查一下谁阻碍了谁
SELECT L1.SID, ' IS BLOCKING ', L2.SID
  FROM V$LOCK L1, V$LOCK L2
WHERE L1.BLOCK = 1
   AND L2.REQUEST > 0
   AND L1.ID1 = L2.ID1
   AND L1.ID2 = L2.ID2;
2 ->这也是你遇到的,一般发生在rac或ops这样的环境,它表明这是一个全局的锁,RAC环境下GV$LOCK.BLOCK=2表示一个全局的潜在锁定冲突,对于查询阻塞没有什么意义

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/196700/viewspace-1177602/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-10-10

  • 博文量
    548
  • 访问量
    130237