ITPub博客

首页 > 数据库 > Oracle > 基于v$lock.block及request及dba_waiters或dba_blockers学习lock锁系列七

基于v$lock.block及request及dba_waiters或dba_blockers学习lock锁系列七

原创 Oracle 作者:wisdomone1 时间:2015-10-29 18:46:50 0 删除 编辑

结论



1,v$lock.block=1表明为持锁会话,而block=0,表示为被阻塞会话(当然前提是至少有2个会话,如果仅一个会话,block=0),也就是说至少要2个会话才有意义比较block的值
2,v$lock虽然可以通过block的值来区分持锁会话或被阻塞会话,但并不直观,并且不能建立持锁会话与被阻塞会话的对应关系,当然,你可以对v$lock进行再加工,是可以满足这个需求的
3,通过dba_waiters及dba_blockers可以显示等待会话及持锁会话的对应关系,非常直观,是v$lock的有效补充
4,dba_blockers仅适用于单实例数据库
5,基于v$lock,
    持锁会话的条件是,request为none,block=1
    被阻塞会话的条件是,request为非none,block=0




测试



1,创建测试表并插入数据
SQL> select * from v$version where rownum=1;


BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production


SQL> create table t_block(a int,b int);


Table created.


SQL> insert into t_block values(1,1);


1 row created.


SQL> commit;


Commit complete.


会话1
SQL> select * from v$mystat where rownum=1;


       SID STATISTIC#      VALUE
---------- ---------- ----------
       234          0          0


SQL> update t_block set a=3 where a=1;


1 row updated.






会话2


SQL> select * from v$mystat where rownum=1;


       SID STATISTIC#      VALUE
---------- ---------- ----------
        55          0          0


SQL> delete from t_block where a=1;
hang住




监控会话  


---会话2 DELETE操作 HANG住,其BLOCK为0,而request为x,即它请求6级事务排它锁,


SQL> l
  1  select sid,type,id1,id2,
  2         decode(lmode,0,'none',1,'null',2,'row-s',3,'row-x',4,'s',5,'ssx',6,'x') lmode,
  3         decode(request,0,'none',1,'null',2,'row-s',3,'row-x',4,'s',5,'ssx',6,'x') request,
  4         ctime,block
  5* from v$lock where  type in ('TM','TX') and sid in (234,55)
SQL> /


       SID TYPE        ID1        ID2 LMODE      REQUEST         CTIME      BLOCK
---------- ---- ---------- ---------- ---------- ---------- ---------- ----------
        55 TX     19857420       3159 none       x                  24          0 --被阻塞会话55,其block=0,request=x
       234 TM        74772          0 row-x      none               93          0
        55 TM        74772          0 row-x      none               25          0
       234 TX     19857420       3159 x          none               93          1  --阻塞会话即持锁会话234,其block=1,



但是从v$lock是可以查找持锁会话及等待锁会话的信息,但不直观,可以通过dba_waiters进行查看
SQL> select waiting_session,holding_session,lock_type,mode_held,mode_requested,lock_id1,lock_id2 from dba_waiters where waiting_session=55;


WAITING_SESSION HOLDING_SESSION LOCK_TYPE            MODE_HELD                 MODE_REQUESTED         LOCK_ID1   LOCK_ID2
--------------- --------------- -------------------- ------------------------- -------------------- ---------- ----------
             55             234 Transaction          Exclusive                 Exclusive              19857420       3159




或者通过dba_blockers也可以查询持锁会话的SID,但注意此字典适用于单实例数据库
SQL> select holding_session from dba_blockers;


HOLDING_SESSION
---------------
            234


个人简介:


8年oracle从业经验,具备丰富的oracle技能,目前在国内北京某专业oracle服务公司从事高级技术顾问。
   
   服务过的客户:
          中国电信
          中国移动
          中国联通
          中国电通
          国家电网
          四川达州商业银行
          湖南老百姓大药房
          山西省公安厅
          中国邮政
          北京302医院     
          河北廊坊新奥集团公司
  
 项目经验:
           中国电信3G项目AAA系统数据库部署及优化
           中国联通CRM数据库性能优化
           中国移动10086电商平台数据库部署及优化
           湖南老百姓大药房ERR数据库sql优化项目
           四川达州商业银行TCBS核心业务系统数据库模型设计和RAC部署及优化
           四川达州商业银行TCBS核心业务系统后端批处理存储过程功能模块编写及优化
           北京高铁信号监控系统RAC数据库部署及优化
           河南宇通客车数据库性能优化
           中国电信电商平台核心采购模块表模型设计及优化
           中国邮政储蓄系统数据库性能优化及sql优化
           北京302医院数据库迁移实施
           河北廊坊新奥data guard部署及优化
           山西公安厅身份证审计数据库系统故障评估
         
 联系方式:
          手机:18201115468
          qq   :   305076427
          qq微博: wisdomone1
          新浪微博:wisdomone9
          qq群:275813900    
          itpub博客名称:wisdomone1    http://blog.itpub.net/9240380/




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

请登录后发表评论 登录
全部评论
提供针对oracle初学者及进阶的数据库培训,欢迎大家咨询: 微信: wisdomone 微信公众号: lovedb qq: 305076427 微博: wisdomone9

注册时间:2008-04-04

  • 博文量
    2150
  • 访问量
    11876802