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

当出现如下之一的条件,便释放共享更新锁:

(1)、执行提交(COMMIT)语句;

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

(3)、程序停止运行。

执行ROLLBACK操作不能释放行锁。

从上面讲述可见,ORACLE RDBMS的加锁机制,解决了并发事务的相容与互斥问题。相容保证事务的并发性,互斥确保数据的一致性。

其中最后一行最后一列为其它用户提供在不同行上设置SHARE UPDATE锁。但当用户1在某行上进行更新操作时,用户2只有等待用户1提交事务后,才能更新自己所封锁的行。

中最后一行最后一列为其它用户提供在不同行上设置SHARE UPDATE锁。但当用户1在某行上进行更新操作时,用户2只有等待用户1提交事务后,才能更新自己所封锁的行。

死锁

封锁虽然能够有效的解决并发操作,但是任何资源的独占都会有死锁的危险。例如:有两个事务T1,T2,T1对数据A施加独占封锁,T2对数据B施加了独占封锁。再假设T1要对数据B加锁,由于B已被T2独占封锁,因此T1置于等待状态,等待B被释放;现在若T2也要对A进行封锁,由于A已被T1独占封锁,因此T2也被置于等待状态。这样就形成了两个事务相互等待的状态,而且永远不能结束,此种情况称为死锁。

在Oracle系统中能自动发现死锁,并选择代价最小的,即完成工作量最少的事务予以撤消,释放该事务所拥有的全部锁,记其它的事务继续工作下去。

从系统性能上考虑,应该尽可能减少资源竞争,增大吞吐量,因此用户在给并发操作加锁时,应注意以下几点:

1、对于UPDATE和DELETE操作,应只封锁要做改动的行,在完成修改后立即提交。

2、当多个事务正利用共享更新的方式进行更新,则不要使用共享封锁,而应采用共享更新封锁,这样其它用户就能使用行级锁,以增加并行性。

3、尽可能将对一个表的操作的并发事务施加共享更新锁,从而可提高并行性。

4、在应用负荷较高的期间,不宜对基础数据结构(表、索引、簇和视图)进行修改。

oracle 独占更新,Oracle的共享封锁 独占封锁和共享更新封锁 (3)相关推荐

  1. Oracle的共享封闭 独占封闭和共享更新封闭 (1)

    前导发端:赛迪网    作者:Andy 设立封闭机制紧张是为了对并发操纵截止控制,对搅扰截止封闭,担保数据的分比喻性和切确性.Oracle数据库封闭体例有三种:共享封闭,独占封闭,共享更新封闭. Or ...

  2. oracle模式和表,Oracle 的锁表机制--EXCLUSIVESHAVE(共享和独占模式)

    1.共享方式的表封锁      共享方式的表封锁是对表中的所有数据进行封锁,该锁用于保护查询数据的一致性,防止其它用户对已封锁的表进行更新.其它用户只能对该表再施加共享方式的锁,而不能再对该表施加独占 ...

  3. oracle rdbms包括,Oracle RDBMS的封锁类型有哪些?

    设立封锁机制主要是为了对并发操作进行控制,对干扰进行封锁,保证数据的一致性和准确性.Oracle数据库封锁方式有三种:共享封锁,独占封锁,共享更新封锁. Oracle RDBMS的封锁类型可分为如下三 ...

  4. oracle进程结构中完成更新,Oracle 进程结构

    Oracle进程结构 进程是动态创建的,完成任务后就消亡:而程序是静态的实体,程序是可以复制.编辑的.进程强调的是执行过程,而程序仅仅是指令的有序集合:进程在内存中,程序在外存中. ORACLE分为用 ...

  5. oracle中的表怎样保存,怎样保存excel 表格数据库中-如何将excel表格更新oracle数据库中数据...

    如何将excel表格更新oracle数据库中数据 这里以SQL SERVE2008为例.SQLSERVER2008有一个"数据导入导出功能",当然我们也可以打开数据库之后,在数据库 ...

  6. Oracle数据库中的级联查询、级联删除、级联更新操作教程

    这里整理了Oracle中的三种级联操作,其中Oracle定义外健的时候可以定义级联删除,但是没有级联修改的语法,当然可以用触发器实现,下面我们详细来看Oracle数据库中的级联查询.级联删除.级联更新 ...

  7. Oracle数据库之oracle update set select from 关联更新

    本文主要向大家介绍了Oracle数据库之oracle update set select from 关联更新,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. 工作中有个需求,现在 ...

  8. oracle 监听共享 专用,【案例】Oracle报错TNS-12618 多版本监听LISTENER程序共享无法启动...

    天萃荷净 运维DBA反映当前环境的Oracle存在10G与9i两个版本,在启动监听程序的时候一个无法启动报错TNS-12618,分析原因为双监听IPS争用导致 在一台机器上装了9.2.0.4和10.1 ...

  9. oracle 多值更新,oracle 同时更新(update)多个字段多个值

    --创建表A,B: create table A (a1 varchar2(33),a2 varchar2(33),a3 varchar2(33)); create table B (b1 varch ...

  10. oracle 外键 更新,Oracle外键级联删除与更新

    2012年Oracle:Oracle外键级联删除与更新 比来软件系统中要删除一标识表记标帜录,就要联系关系到同时删除良多若干好多张表,它们之间还存在着约束关系.所以考虑到在建树表时加上约束关系,具体内 ...

最新文章

  1. 读取CSV文件内容,将其转换成JSON字符串输出
  2. 【前端】react and redux教程学习实践,浅显易懂的实践学习方法。
  3. VM 7 下ubuntu安装vmtools
  4. 理解矩阵 的一些评论
  5. python阿凡提麦子问题_阿凡提愚弄国王
  6. onclick实现超链接_给超链接加onclick事件
  7. 大话手游时间服务器哪个最新,大话手游时间服和免费服优缺点分析!选择最适合你的...
  8. oppo手机快速截屏的方法
  9. 免费ppt模板在哪下载?轻松get免费ppt模板下载网站
  10. 【通信原理 入坑之路】基于MATLAB的移动通信系统仿真 之 瑞利衰落信道的原理与仿真
  11. matlab中几种取整函数的用法(fix, floor, ceil, round)
  12. 没Switch也能玩有氧拳击 咕咚智能运动手表F4全面评测
  13. aic值检验 p值_模型选择方法:AIC和BIC
  14. 安装eve-ng时选择桥接模式显示vmnet0未运行
  15. 数组(一维数组与二维数组)
  16. 09-面向对象综合训练综合练习
  17. python硬件驱动_从零开始:手把手教你安装深度学习操作系统、驱动和各种python库!...
  18. 一份特殊的申请书--------纪念我可能会失去的书生意气
  19. python3.0 语法笔记2(Cookie登录)
  20. Hexo搭建Github-Pages博客填坑教程

热门文章

  1. jenkins集成自动化配置(二) 创建项目和项目配置
  2. minecraft服务器stats文件夹,《我的世界》文件夹目录作用讲述
  3. python中冒号报错_python冒号_python 冒号_python冒号报错 - 云+社区 - 腾讯云
  4. 使用addClass和removeClass完成内容切换
  5. 清华贫困生的树洞,没有卖惨与诉苦,那股韧劲直抵人心
  6. 【读过的书】《好看的皮囊千篇一律,有趣的灵魂万里挑一》
  7. android用户和AID
  8. 拼图复原_1张废旧纸板,3分钟带娃变成趣味拼图!
  9. 弹性网卡支持私网多IP
  10. 重庆市企业数据名录爬取采集-信用中国(重庆)