Oracler的锁概念

Oracle锁定机制大部分情况下是自动的。你不需要关心如何锁定想要更改的对象的细节,Oracle在后台自动维护它们。

锁有两种级别:1.行级锁,2.表级锁。

锁定的优点:

  一致性:一次只允许一个用户修改数据,从而提供统一的数据。

  完整性:向所有用户提供正确的数据。如果一个用户进行了更改并保存,那么所做的更改将反映给所有用户。

  并发性:允许多个用户访问同一数据。如一个用户在修改数据,其它用户可同时进行查询。

行级锁:是一种排他锁,防止其他事务修改此行,但是不会阻止读取此行的操作,在使用INSERTUPDATEDELETE和SELECT……FOR UPDATE等语句时,Oracle会自动应用行级锁。

OF子句用于指定即将更新的列,即锁定行上的特定列。

例:

  select * from order_master where vencode='0002' for update of odate,del_date;

  update order_master set del_date='28-8月-05' where vencode='v002'

  commit;

首先锁定要更新的行,防止其他用户更改这些行,然后用update命令执行更新操作,最后通过提交命令释放锁定。

WAIT子句指定等待其他用户释放锁的秒数,防止无限期的等待。

例:

  select * from order_master where vencode='v002' for update;

用另一用户登录后执行 select * from order_master where vencode='v002' for update wait 5;

由于要更新的行已经被锁定,上述命令在等待5秒钟之后返回并报错。

原文地址:https://www.cnblogs.com/dadaxiaolan/p/3685471.html