Oracle的锁机制归纳总结 2010-06-09作者:wallimn来源:wallimn的blog 锁是防止在两个事务操作同一个数据源(表或行)时交互破坏数据的一种机制。Oracle采用封锁技术保证并发操作的可串行性。Oracle的锁分为两大类:数据锁(也称DML锁)和字典锁。字典锁是OracleDBMS内部用于对字典表的封锁。字典锁包括语法分析锁和DDL锁,由DBMS在必要的时候自动加锁和释放锁,用户无机控制。Oracle主要提供了5种数据锁:共享锁(ShareTableLock,简称S锁)、排它锁(ExclusiveTableLock,简称X锁)、行级锁(RowShareTableLock,简称RS锁)、行级排它锁(RowExclusiveTableLock,简称RX锁)和共享行级排它锁(ShareRowExclusiveTableLock,简称SRX锁)。其封锁粒度包括行级和表级。(ShareTableLock,S):加锁语法:LockTableTableNameInShareMode;允许的操作:一个共享锁由一个事务控制,仅允许其它事务查询被锁定的表。一个有效的共享锁明确地用Select…Forupdate形式锁定行,或执行LockTableTableNameInShareMode语法锁定整个表,不允许被其它事务更新。允许多个事务在同一个表上加共享锁,这种情况下不允许在该表上加锁的事务更新表(即使有一个事务控制的是形如SelectRow…forupdate这样行锁也是不被允许的)。因此,仅有一个事务的一个共享锁可以更新该表如果其它事务也有相同的事务在该表上的话。禁止的操作:一个共享锁由一个事务来控制,防止其它事务更新该表或执行下面的语句:LOCKTABLETableNameINSHAREROWEXCLUSIVEMODE;LOCKTABLETableNameINROWEXCLUSIVEMODE;(ExclusiveTableLock,X):排它锁是在锁机制中限制最多的一种锁类型,允许加排它锁的事务独自控制对表的写权限。加锁语法:LockTableTableNameInExclusiveMode;允许的操作:在一个表中只能有一个事务对该表实行排它锁,排它锁仅允许其它的事务查询该表。禁止的操作:拥有排外锁的事务禁止其它事务执行其它任何DML类型的语句或在该表上加任何其它类型的锁。定义排它锁的语法:LOCKTABLETableNameINEXCLUSIVEMODE;(RowShareTableLock,RS):一个行级锁(有时称为SubshareTableLock,简称SS,子共享锁)需要该事务在被锁定行的表上用update的形式加锁。当有下面语句被执行的时候行级锁自动加在操作的表上。SELECT...FROMTableName...FORUPDATEOF...;LOCKTABLETableNameINROWSHAREMODE;行级锁(RowShareTableLock)在锁类型中是限制最少的,也是在表的并发程度中使用程度最高的。允许的操作:行级共享锁由一个事务控制,允许其它事务查询、插入、更新、删除或同时在同一张表上锁定行。因此其它事务可以同时在同一张表上得到行级锁、共享行级排它锁、行级排它锁、排它锁。参见数据锁的相
oracle数据库锁使用 来自淘豆网m.daumloan.com转载请标明出处.