• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

软件测试中oracle锁表

发布: 2010-6-01 14:00 | 作者: 网络转载 | 来源: 领测软件测试采编 | 查看: 108次 | 进入软件测试论坛讨论

领测软件测试网

软件测试中oracle锁表

lock table BO_ThreeYearInvestProgramHis in exclusive mode nowait;

一,锁

为了防止用户在同一时间并发地访问和修改资源,ORACLE使用不同类型的锁控制对数据的并发访问,以防止用户之间出现破坏性的交互操作
,oracle 为处理事务自动锁定资源。

锁在SQL语句开始它们与数据的相互作用时获得,并在事务的整个过程中有效

oracle9i使用两种锁模式:

.独占模式(排他):不允许其他任何并发会话以任何方式共享锁定的资源,修改数据时需要这种锁。

.共享模式:允许对同一块数据的并发读访问。在更改数据时,上升为独占模式

一)行级锁

insert update delete 隐式加行锁(排他)

select ... for update 显示加行锁(共享)

select ...for update 用于显示锁定将要更新的数据行,防止其他用户在更新之前操作此行

如:select * from emp where deptno=30 for update

update emp set ename='Joke' where empno=7499;

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

假如有其他用户要锁定同一资源:可以使用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)排他锁模式(限制性强)

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

lock table emp in exclusive mode;

三) 死锁

如:USERA: lock table scott.emp in share mode;

USERB: lock table scott.emp in share mode ;

USERA: update scott.emp set ename='Smith' where empno=7369;

USERB: update scott.emp set job='CLERK' where empno=7521;

发生死锁

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: oracle Oracle ORACLE 软件测试


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网