关于lock的学习(二)

mac2022-06-30  73

关于lock的学习(二)

测试环境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  蓝红石 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/liuweihua/archive/2012/05/07/2487360.html

最新回复(0)