Chinaunix首页 | 论坛 | 博客
  • 博客访问: 458132
  • 博文数量: 711
  • 博客积分: 3000
  • 博客等级: 中校
  • 技术积分: 4200
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-28 14:18
文章分类

全部博文(711)

文章存档

2011年(1)

2008年(710)

我的朋友

分类:

2008-10-28 14:18:40

  创建表

   table test (a number,b number);

  表已创建。

  1 对于未提交的insert操作

   into test values(10,20);

  已创建 1 行。

SQL> select * from v$lock; 
  ADDR KADDR SID TYPE ID1 D2 LMODE REQUEST CTIME BLOCK
  12AB9394 12AB93A8 17 TM 29512 0 3 0 84 0
  12AF9218 12AF9324 17 TX 589841 5506 6 0 84 0

  可见,对于未提交的insert操作,会产生两个锁,其类型(TYPE)分别为TM和TX,也就是表级意向锁和事务锁。

  表级意向锁的模式(LMODE)为:3,表示是row exclusive,即表示此表中的某行获得了行排他锁。

  事务锁的模式(LMODE)为:6, 表示是exclusive,即排他锁,表示此事务获得了排他锁。

  BLOCK表示此锁是否阻塞了其它的锁,即发生死锁;此处没有。

  2 对于提交的insert操作

  ;

  提交完成。

SQL> select * from v$lock;

  ADDR KADDR SID TYPE ID1 D2 LMODE REQUEST CTIME BLOCK

  此处已没有记录,说明在提交后,即完成了锁的释放。

  3 对于未提交的update操作

   test set a=11 where a=10;

  已更新 1 行。

SQL> select * from v$lock; 
  ADDR KADDR SID TYPE ID1 D2 LMODE REQUEST CTIME BLOCK
  12AB9394 12AB93A8 17 TM 29512 0 3 0 3 0
  12AF9218 12AF9324 17 TX 262153 5590 6 0 3 0

  可见update操作所引起的锁的信息完全等同于insert操作……

  4 对于提交的update操作

  ;

  提交完成。

SQL> select * from v$lock; 
  ADDR KADDR SID TYPE ID1 D2 LMODE REQUEST CTIME BLOCK

  此处已没有记录,说明在提交后,即完成了锁的释放。

[1]       

【责编:John】

--------------------next---------------------

阅读(315) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~