日期:2014-05-16 浏览次数:20549 次
一、Oracle的锁
锁是Oracle管理共享数据库资源并发访问并防止并发数据库事务之间“相互干涉”的核心机制。
1、锁的类型
(1)DML锁:允许并发执行数据修改,特定数据行上的锁或表中的所有行的锁。
(2)DDL锁:保护对象结构定义。
(3)Latch锁:这是Oracle内部锁,用来协调对期共享数据结构的访问。
2、LOCK锁的模式
(1)空锁(NULL)
(2)排它锁(X)
(3)共享锁(S)
二、DML锁
1、TX锁:修改数据的事务在执行期间会获得这种锁。
TX锁的模式:排它锁(X)
TX锁和行级锁:TX锁不是行锁,一个事务不管修改了多少行,都只会有一个TX锁。TX锁算是行锁的代表,行锁上发生了等待,会表 现为TX锁的等待。行锁是属于事务的,事务开始,行锁产生,事务结束,行锁也被释放。
两个会话时DML操作同一行数据,会产生阻塞,操作如下:
会话125号,更新id=1这行数据。
gyj@OCM> select distinct sid from v$mystat;
SID
----------
125
gyj@OCM> update t5 set name='aaaaaa' where id=1;
1 row updated.
事务未提交!!
会话145,同时也更新id=1这行数据。
gyj@OCM> select distinct sid from v$mystat;