WEB开发网
开发学院数据库Oracle Oracle的封锁机制 阅读

Oracle的封锁机制

 2007-05-05 12:04:54 来源:WEB开发网   
核心提示: 独占方式的表封锁可通过如下的SQL语句来显示地获得:LOCK TABLE <表名>[,<表名>]....IN EXCLUSIVE MODE [NOWAIT]独占方式的表封锁也可以在用户执行DML语句INSERT、UPDATE、DELETE时隐含获得,拥有独占方式表封

独占方式的表封锁可通过如下的SQL语句来显示地获得:

LOCK TABLE <表名>[,<表名>]....

IN EXCLUSIVE MODE [NOWAIT]

独占方式的表封锁也可以在用户执行DML语句INSERT、UPDATE、DELETE时隐含获得。

拥有独占方式表封锁的事务,在出现如下条件之一时,便释放该封锁:

(1)、执行COMMIT或ROLLBACK语句。

(2)、退出数据库(LOG OFF)

(3)、程序停止运行。

独占方式封锁通常用于更新数据,当某个更新事务涉及多个表时,可减少发生死锁。

3、共享更新封锁方式

共享更新封锁是对一个表的一行或多行进行封锁,因而也称作行级封锁。表级封锁虽然保证了数据的一致性,但却减弱了操作数据的并行性。行级封锁确保在用户取得被更新的行到该行进行更新这段时间内不被其它用户所修改。因而行级锁即可保证数据的一致性又能提高数据操作的迸发性。

可通过如下的两种方式来获得行级封锁:

(1)、执行如下的SQL封锁语句,以显示的方式获得:

LOCK TABLE <表名>[,<表名>]....

IN SHARE UPDATE MODE [NOWAIT]

(2)、用如下的SELECT ...FOR UPDATE语句获得:

SELECT <列名>[,<列名>]...

FROM <表名>

WHERE <条件>

FOR UPDATE OF <列名>[,<列名>].....[NOWAIT]

一旦用户对某个行施加了行级封锁,则该用户可以查询也可以更新被封锁的数据行,其它用户只能查询但不能更新被封锁的数据行.如果其它用户想更新该表中的数据行,则也必须对该表施加行级锁.即使多个用户对一个表均使用了共享更新,但也不允许两个事务同时对一个表进行更新,真正对表进行更新时,是以独占方式封锁表,一直到提交或复原该事务为止。行锁永远是独占方式锁。

上一页  1 2 3 4 5  下一页

Tags:Oracle 封锁 机制

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接