• 欢迎访问ByWei.Cn,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,加入百味博客 软件定制QQ群
  • 已升级为最新版主题,并将持续优化改造中,支持说说碎语功能,可像添加文章一样直接添加说说,博客主题升级啦
  • 感谢您百度求点赞啊!百度网址
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏百味博客吧
  • 博主热烈欢迎 软件定制开发 联系:http://www.bywei.cn

详解ORACLE锁的教程

数据库 百味博客 11年前 (2011-08-19) 1332次浏览 0个评论 扫描二维码

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举例 

 


百味博客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:详解ORACLE锁的教程
喜欢 (0)
[微信扫一扫]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址