在oracle中如何锁表及解锁?
来源:广州中睿信息技术有限公司官网
发布时间:2012/10/21 23:25:16 编辑:itlead 阅读 2437
一.为了防止用户在同一时间并发地访问和修改资源,ORACLE使用不同类型的锁控制对数据的并发访问,以防止用户之间出现破坏性的交互操作,oracle为处理事务自动锁定资源。锁在SQL语句开始它们与数据



  一.为了防止用户在同一时间并发地访问和修改资源,ORACLE使用不同类型的锁控制对数据的并发访问,以防止用户之间出现破坏性的交互操作,oracle 为处理事务自动锁定资源。锁在SQL语句开始它们与数据的相互作用时获得,并在事务的整个过程中有效。

  ORACLE使用两种锁模式:

  1.独占模式(排他):不允许其他任何并发会话以任何方式共享锁定的资源,修改数据时需要这种锁。
     2.共享模式:允许对同一块数据的并发读访问。在更改数据时,上升为独占模式。

  

   (一)行级锁

  insert update delete 隐式加行锁(排他)
        select ... for update 显示加行锁(共享)
        select ...for update 用于显示锁定将要更新的数据行,防止其他用户在更新之前操作此行

  如:

  

  在锁释放之前,其他用户不可以对锁定的数据行进行(修改,删除)操作,查询可以  

  假如有其他用户要锁定同一资源:可以使用wait 子句对锁的等待时间控制   

  如: 在另一用户中:select * from emp where deptno=30 for update wait 2 (等待2秒 ) 

  如2秒钟还未释放资源,系统将会给出提示信息

  

   (二)表级锁

  共享模式(in share mode)   

  共享更新模式(in share update mode)  

  排他锁模式   

  锁定表的通用语法:

  lock table 表名 in <share or share update or exclusive mode>;

 

  1) 共享模式

  不允许其他用户插入,更新和删除行,多个用户可以同时在同一表上设置共享锁,这样设置锁的多个用户都只能执行查询

         lock table emp in share mode;

 

  2)共享更新模式(in share update mode)

  允许多个用户同时锁定表的不同行, 允许其他用户进行DML(insert update delete select)操作 , 除了已锁定的行  

      如: lock table emp in share update mode;   

         select * from emp where deptno=30 for update //锁定的行  

      其他用户不能delete ,update 部门30的雇员信息  

      其他用户可以查看锁定的行: select * from emp where deptno=30

 

  3)排他锁模式(限制性强)

  不允许其他用户插入,更新和删除行, 允许查看数据,但只有一个用户可以在表中放置排他锁  

        

  

   (三))死锁

  如:

  

     二、杀掉进程

    

    把锁给KILL掉  

     

  

  

  

  本站技术原创栏目文章均为中睿原创或编译,转载请注明:文章来自中睿,本站保留追究责任的权利

联系我们CONTACT 扫一扫
愿景:成为最专业的软件研发服务领航者
中睿信息技术有限公司 广州•深圳 Tel:020-38931912 务实 Pragmatic
广州:广州市天河区翰景路1号金星大厦18层中睿信息 Fax:020-38931912 专业 Professional
深圳:深圳市福田区车公庙有色金属大厦509~510 Tel:0755-25855012 诚信 Integrity
所有权声明:PMI, PMP, Project Management Professional, PMI-ACP, PMI-PBA和PMBOK是项目管理协会(Project Management Institute, Inc.)的注册标志。
版权所有:广州中睿信息技术有限公司 粤ICP备13082838号-2