行共享锁(Row Share ,RS)

对数据表定义了行共享锁后,如果被事务A获得,那么其他事务可以进行并发查询、插入、删除及加锁,但不能以排他方式存取该数据表。

为Student表添加行共享锁

行排他锁(Row Exclusive,RX)

当事务A获得行排他锁后,其他事务可以对同一数据表中的其他数据行进行并发查询、插入、修改、删除及加锁,但不能使用行共享锁、行共享排他锁和行排他锁3种方式加锁。

为Student表添加行排他锁

共享锁(Share,S)

当事务A获得共享锁后,其他事务可以对同一数据表中的其他数据行进行并发查询、加共享锁但不能修改表,不能使用排他锁、行共享排他锁和行排他锁3种方式加锁。

为Student表添加共享锁

第一步:为表Student添加排他锁

第二步:打开一个新的SQL Plus会话,分别执行查询和更新操作

此时,新打开的会话可以查询,但是更新语句一直处于锁等待的状态。回到第一个会话,当解除锁,例如输入rollback回滚操作后,新会话会立刻执行完成。

共享行排他锁(Share Row Exclusive,SRX)

当事务A获得共享排他锁后,其他事务可以执行查询和对其他数据行加锁,但不能修改表,也不能再添加共享锁、共享行排他锁、行排他锁和排他锁。

为Student添加共享行排他锁

第一步:为Student添加共享行排他锁

第二步:新会话中为student添加共享锁

发现,新打开的会话窗口,为已经添加共享排他锁的事务再次添加共享锁时,一直处于等待状态,当第一个会话释放资源时,第二个会话方可执行。

排他锁(Exclusive,X)

排他锁是最严格的锁,当事务A获得排他锁后,事务A可以执行对数据表的读写操作,其他事务可以执行查询但不能执行插入、修改和删除操作。

其他事务可以执行查询和对其他数据行加锁,但不能修改表,也不能再添加共享锁、共享行排他锁,行排他锁和排他锁。

为Student表添加排他锁

第一步:为表Student添加排他锁

第二步:打开一个新的SQL Plus会话,分别执行查询和更新操作

此时,新打开的会话可以查询,但是更新语句一直处于锁等待状态。回到第一个会话,解除锁,新会话立刻执行完成。

Oracle--加锁的方法相关推荐

  1. 用ASP.Net(C#)连接Oracle数据库的方法

    今天看了一下asp.net连接oracle数据库的方法,得到了如下代码.这段代码打开了MyTable表,并把操作员的名字列出.字段类型是OracleString.读取的时候用的是字段编号,我不知道怎么 ...

  2. oracle分页的方法,Oracle数据库分页的集中方法(三种方法)

    在 做项目中用到了分页,下面说一下oracle分页的方法; 采用伪列 rownum 查询前10条记录 [sql] select * from t_user t where ROWNUM <10; ...

  3. C#连接Oracle数据库的方法(Oracle.DataAccess.Client也叫ODP.net)

    官方下载地址(ODP.net)(中文):http://www.oracle.com/technetwork/cn/topics/dotnet/downloads/index.html 官方下载地址(O ...

  4. phalcon: 解决php7/phalcon3.2以上版本,不支持oracle数据库的方法

    phalcon: 解决php7/phalcon3.2以上版本,不支持oracle数据库的方法 参考文章: (1)phalcon: 解决php7/phalcon3.2以上版本,不支持oracle数据库的 ...

  5. Win10远程桌面失败,这可能是由于CredSSP加密Oracle修正 解决方法

    Win10远程桌面失败,这可能是由于CredSSP加密Oracle修正 解决方法 参考文章: (1)Win10远程桌面失败,这可能是由于CredSSP加密Oracle修正 解决方法 (2)https: ...

  6. .NET连接ORACLE数据库的方法

    .NET连接ORACLE数据库的方法就目前有3种: 1.OLEDB的方式,这种方式要求你要安装oracle client,这两年来做的关于oracle数据库的,我都采用这种方式,虽然连接的速度慢了一点 ...

  7. python连接oracle数据库的方法_Python3.6连接Oracle数据库的方法详解

    本文实例讲述了Python3.6连接Oracle数据库的方法.分享给大家供大家参考,具体如下: 下载cx_Oracle模块模块: https://pypi.python.org/pypi/cx_Ora ...

  8. oracle数据库怎么删除数据库,oracle数据库如何删除 oracle数据库删除方法

    oracle数据库如何删除?本篇文章小编给大家分享一下oracle数据库删除方法,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 1.图形界面删除 练习 ...

  9. UBUNtu·E: 无法获得锁 /var/lib/apt/lists/lock - open (11: 资源暂时不可用) E: 无法对目录 /var/lib/apt/lists/ 加锁 问题解决方法

    E: 无法获得锁 /var/lib/apt/lists/lock - open (11: 资源暂时不可用) E: 无法对目录 /var/lib/apt/lists/ 加锁 问题解决方法 参考链接1 参 ...

  10. oracle数据导入到python,Python导入oracle数据的方法 -电脑资料

    作者:Sephiroth 字体:[增加 减小] 类型:转载 这篇文章主要介绍了Python导入oracle数据的方法,涉及Python读取csv文件信息再插入到Oracle数据库的相关技巧,具有一定参 ...

最新文章

  1. cad文本改宋体字型lisp_CAD绘图员必须掌握的15个高能技巧,别人3天工作量你半天搞定!...
  2. 理科的至尊思想:进制之间的转换
  3. AGC016B Colorful Hats(构造)
  4. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波2 - 图像反转、对数变换
  5. 2017/08/22 工作日志
  6. VS2008安装deffactory.dat文件错误解决方法
  7. CentOS 7 安装开发者环境
  8. 大数据入门教程系列之Hadoop环境搭建、软件准备
  9. 记12306货运系统“抢订空车”插件的编写--订车流程梳理
  10. 上海海洋大学计算机专业是几本,上海海洋大学是几本
  11. 量化投资 --- 技术篇 (1) CAPM模型
  12. Python数据分析与挖掘实战学习12
  13. 开发media play,realplayer,暴风影音 等主流播放器视频特效插件
  14. 林轩田机器学习技法(Machine Learning Techniques)笔记(一)
  15. php中的时间戳_php时间戳是什么
  16. (7)web安全|渗透测试|网络安全 如何判断是否有CDN存在,并绕过CDN找到真正的ip的方法
  17. swift 在linux系统,Linux下搭建Swift语言开发学习环境
  18. Word 2010 找不到 Endnote选项
  19. [CSP-S 2022] 假期计划题解
  20. 论文投稿指南——中文核心期刊推荐(数学)

热门文章

  1. firefox firbug 的“阻挡” blocking
  2. kaggle | 入门教程
  3. java 断言 assert 初步使用:断言开启、断言使用
  4. SpringBoot整合!docker更新镜像名称
  5. java将内容写入文件,纯干货
  6. 《Qt Quick核心编程》勘误
  7. 数据链路层的有那三个基本问题?为什么都必须加以解决?
  8. kylin调优,项目中错误总结,知识点总结,kylin jdbc driver + 数据库连接池druid + Myba
  9. 二进制与十进制的相互转换
  10. 数字价值观察室 实录 | 数字化在企业内部的“对立”和“统一”