蓝红石

生活与工作点滴

   :: 首页  ::  :: 联系 :: 订阅 订阅  :: 管理

测试环境oracle11gR2
首先登录hr用户执行以下SQL

hr@ORCL112> update t set status='Y' where object_name like 'sys';

已更新0行。

再另开一个session,用sys登录
当hr用户刚登录时,执行以下sql结果如下:

 

sys@ORCL112> select a.sid,a.type,a.lmode,a.request,a.block,trunc(a.id1/power(2,16)) rbs,bitand(a.id1,to_number('ffff','xxxx'))+0 s
lot,a.id2 from v$lock a,v$session b where a.sid=b.sid and b.username='HR';

       SID TY      LMODE    REQUEST      BLOCK        RBS       SLOT        ID2
---------- -- ---------- ---------- ---------- ---------- ---------- ----------
       200 AE          4          0          0          0        100          0

当hr用户执行SQL时,执行以下sql结果如下:

sys@ORCL112> select a.sid,a.type,a.lmode,a.request,a.block,trunc(a.id1/power(2,16)) rbs,bitand(a.id1,to_number('ffff','xxxx'))+0 s
lot,a.id2 from v$lock a,v$session b where a.sid=b.sid and b.username='HR';

       SID TY      LMODE    REQUEST      BLOCK        RBS       SLOT        ID2
---------- -- ---------- ---------- ---------- ---------- ---------- ----------
       200 AE          4          0          0          0        100          0
       200 TM          3          0          0          1      11019          0

sys@ORCL112> select xidusn,xidslot,xidsqn,recursive from v$transaction;

未选定行

由此说明当更新一张表时,如果实际未更新到某条记录,则在v$lock只会产生TM锁,即表级锁

posted on 2012-05-07 14:28  蓝红石  阅读(1273)  评论(0编辑  收藏  举报