超越自我

一切皆有可能

 

DB2和Oracle的锁机制

DB2和Oracle的锁机制
1.DB2的锁
具体详见转贴
http://www-900.ibm.com/cn/support/nav/200402/p45-1.shtml
2.Oracle的锁
1>行级锁:tx
  行被排他锁定;
  在某行的锁被释放之前,其他用户不能修改此行;
  使用commit或者rollback命令释放;
      使用insert,update的时候自动被上锁;
      用select ...for update语句获得行级锁:被加锁的对象是所有
      被select 到的行;
      防止其他用户修改此行,但可以查询;
      具体的形式为:
        如果锁定所有列:select..for update;
        锁定特定列:select ..for update of ename;
        不合理的是:当一个用户锁定时,别的用户不知道,只会等;
        所以用select ..for update wait(second):
        超过secong秒后加锁的用户还没有解锁的话,
        其他等待也尝试加锁的的用户就会得到一个错误信息;

 2>表级锁:tm 
  可以设置为三种模式:Lock table userID.tablename in [] mode;
  共享:其他用户只能查询,不能更新,删除,插入;
  a.多个用户可以同时对同一个表设置共享锁;
   
  b.共享更新:in share update mode;
   锁定要被更新的行,其他用户可以同时查询,
   插入,更新未被锁定的行,即未被更新的行;
   等于select..for update;
   允许多个用户同时锁定表中不同的行;
  c.排他:
   仅允许其他用户查询,不允许插入,删除,更新;
   在同时间仅允许一个用户在表上放置排他锁;
   如果加上nowait的话,如果发现该表已经被锁定,
   就不再等待,立即返回一个错误信息;

posted on 2006-06-29 17:50 jame 阅读(380) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

常用链接

留言簿(3)

随笔档案

文章分类

文章档案

相册

收藏夹

UML

搜索

最新评论

阅读排行榜

评论排行榜