oracle锁表
 

2010-03-29 来源:网络

 

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;

发生死锁



MySQL索引背后的数据结构
MySQL性能调优与架构设计
SQL Server数据库备份与恢复
让数据库飞起来 10大DB2优化
oracle的临时表空间写满磁盘
数据库的跨平台设计
更多...   


并发、大容量、高性能数据库
高级数据库架构设计师
Hadoop原理与实践
Oracle 数据仓库
数据仓库和数据挖掘
Oracle数据库开发与管理


GE 区块链技术与实现培训
航天科工某子公司 Nodejs高级应用开发
中盛益华 卓越管理者必须具备的五项能力
某信息技术公司 Python培训
某博彩IT系统厂商 易用性测试与评估
中国邮储银行 测试成熟度模型集成(TMMI)
中物院 产品经理与产品管理
更多...   
 
 
 
 

组织简介 | 联系我们 |   Copyright 2002 ®  UML软件工程组织 京ICP备10020922号

京公海网安备110108001071号