日期:2014-05-16  浏览次数:20549 次

并发管理

一、Oracle的锁

 

锁是Oracle管理共享数据库资源并发访问并防止并发数据库事务之间“相互干涉”的核心机制。

1、锁的类型

  1DML锁:允许并发执行数据修改,特定数据行上的锁或表中的所有行的锁。

  2DDL锁:保护对象结构定义。

  3Latch锁:这是Oracle内部锁,用来协调对期共享数据结构的访问。

 

 2LOCK锁的模式

   1)空锁(NULL)

   2)排它锁(X)

   3)共享锁(S)

 

二、DML

1TX锁:修改数据的事务在执行期间会获得这种锁。

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;