日期:2014-05-16 浏览次数:20412 次
1.什么是ORACLE锁
数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。加锁就是实现数据库并发控制的一个非常重要的技术。
2.ORACLE锁的类型
在
数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享锁(Share
Locks,即S锁)。当数据对象被加上排它锁时,其他的事务不能对它修改。加了共享锁的数据对象可以被其他事务读取,但不能被删除和修改。数据库利用这
两种基本的锁类型来对数据库的事务进行并发控制。
?
根据保护的对象不同,Oracle数据库锁可以分为以下几大类:DML锁
(data locks,数据锁),用于保护数据的完整性;DDL锁(dictionary
locks,字典锁),用于保护数据库对象的结构,如表、索引等的结构定义;内部锁和闩(internal locks and latches),保护
数据库的内部结构。
在Oracle数据库中,DML锁主要包括TM锁和TX锁,其中TM锁称为表级锁,TX锁称为事务锁或行级锁。?
当
Oracle执行DML语句时,系统自动在所要操作的表上申请TM类型的锁。当TM锁获得后,系统再自动申请TX类型的锁,并将实际锁定的数据行的锁标志
位进行置位。这样在事务加锁前检查TX锁相容性时就不用再逐行检查锁标志,而只需检查TM锁模式的相容性即可,大大提高了系统的效率。TM锁包括了SS、
SX、S、X 等多种模式,在数据库中用0-6来表示。不同的SQL操作产生不同类型的TM锁。
TM锁的类型0 none?1 NULL 空 Select?2 SS(Row-S) 行级共享锁,其他对象?只能查询这些数据行 Select for update、Lock for?update、
Lock
row share?3 SX(Row-X) 行级排它锁,?在提交前不允许做DML操作
Insert、Update、?Delete、Lock row share?4 S(Share) 共享锁 Create index、Lock
share?5 SSX(S/Row-X) 共享行级排它锁 Lock share row exclusive?6 X(Exclusive)
排它锁 Alter table、Drop able、Drop index、Truncate table 、Lock exclusive
Oracle举例
?
?
推荐交流博客
程序员百味
?? 百味创富社区?
?
?