在现代的多用户多任务系统中,必然会出现多个用户同时访问共享的某个对象,这个对象可能是表,行,或者内存结构,为了解决多个用户并发性访问带来的数据的安全性,完整性及一致性问题,必须要有一种机制,来使对这些共享资源的并发性访问串行化,oracle中的锁就可以提供这样的功能,当事务在对某个对象进行操作前,先向系统发出请求,对其加相应的锁,加锁后该事务就对该数据对象有了一定的控制权限,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作(可以做select动作,但select 利用的是undo中的前镜像数据了).

Oracle锁的分类

Oracle锁基本上可以分为二类

a:共享锁(share locks)  也称读锁,s锁

b:排它锁 (exclusive locks) 也称写锁,x锁

在数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享锁(Share Locks,即S锁)。当数据对象被加上排它锁时,其他的事务不能对它读取和修改。加了共享锁的数据对象可以被其他事务读取,但不能修改。数据库利用这两种基本的锁类型来对数据库的事务进行并发控制。

按锁保护的内容分类

oracle提供多粒度封锁机制,按保护对象来分,据此又可以分为

a:dml锁, data locks 数据锁,用来保护数据的完整性和一致性

b:ddl锁, dictionary locks 字典锁,用来保护数据对象的结构,如table,index的定义

c:内部锁和闩 internal locks and latchs 用来保护数据库内部结构,如sga内存结构

dml锁

DML锁主要包括TM锁和TX锁,其中TM锁称为表级锁,TM锁的种类有S,X,SR,SX,SRX五种,TX锁称为事务锁或行级锁。当Oracle执行delete,update,insert,select for update  DML语句时,oracle首先自动在所要操作的表上申请TM类型的锁。当TM锁获得后,再自动申请TX类型的锁,并将实际锁定的数据行的锁标志位(lb 即lock bytes)进行置位。在记录被某一会话锁定后,其他需要访问被锁定对象的会话会按先进先出的方式等待锁的释放,对于select操作而言,并不需要任何锁,所以即使记录被锁定,select语句依然可以执行,实际上,在此情况下,oracle是用到undo的内容进行一致性读来实现的。

在 Oracle数据库中,当一个事务首次发起一个DML语句时就获得一个TX锁,该锁保持到事务被提交或回滚。在数据行上只有X锁(排他锁),就是说TX锁只能是排他锁,在记录行上设置共享锁没有意义。当两个或多个会话在表的同一条记录上执行DML语句时,第一个会话在该条记录上加锁,其他的会话处于等

oracle无会话锁表,深入浅出oracle锁 原理篇 停止无反应的sql会话相关推荐

  1. Oracle锁表 行级锁 表级锁 行级锁

    2019独角兽企业重金招聘Python工程师标准>>> Oracle锁表  行级锁  表级锁 ---- 行被排他锁定 ----在某行的锁被释放之前,其他用户不能修改此行       ...

  2. oracle数据库锁表很多,oracle锁表的原因_数据库

    怎么修改oracle最大连接数_数据库 修改oracle最大连接数的方法是:首先登录数据库,并查看数据库进程的连接数:接着查询当前会话的连接数:最后用[alter system set process ...

  3. oracle未提交锁表,解决ORACLE锁表问题

    转载备用 在ORACLE操作中经常会发生,尚未提交(或回滚)数据Session异常关闭的情况 会导致表中的某些数据被锁死. 解决办法是用sys登录后,先找出lock的Session. select o ...

  4. oracle 查询两张表合并,oracle的多表合并查询-工作心得

    刚刚开发需求写了个SQL,记个笔记,学习下关于数据库的多表合并查询的用法 select t.* from A t UNION ALL/UNION/Intersect/MINUS select s.* ...

  5. oracle元数据存储在表空间,oracle db中数据和元数据的概念

    本帖最后由 warehouse 于 2014-8-10 11:58 编辑 02年研究dw相关的产品和业务时第一次听说了元数据的概念,很多资料上是这样描述元数据的概念的:元数据是定义或者描述数据的数据. ...

  6. mysql数据库什么情况下会锁表_mysql数据库锁的产生原因及解决办法

    数据库和操作系统一样,是一个多用户使用的共享资源.当多个用户并发地存取数据 时,在数据库中就会产生多个事务同时存取同一数据的情况.若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性 ...

  7. mysql表copy锁表吗_MySQL锁(二)表锁:为什么给小表加字段会导致整个库挂掉?...

    概述 表级锁是MySQL中锁定粒度最大的一种锁,表示对当前操作的整张表加锁,它实现简单,资源消耗较少,被大部分MySQL引擎支持.最常使用的MYISAM与INNODB都支持表级锁定.表级锁定分为表共享 ...

  8. insert 锁表 mysql_mysql insert锁机制【转】

    最近再找一些MySQL锁表原因,整理出来一部分sql语句会锁表的,方便查阅,整理的不是很全,都是工作中碰到的,会持续更新 笔者能力有限,如果有不正确的,或者不到位的地方,还请大家指出来,方便你我,方便 ...

  9. oracle 恢复 跳过 表空间,Oracle表空间恢复

    如果误删除了一个表空间中test的数据文件test.dbf,然后下次重新启动数据库的时候发      数据库不能打开了(open), 老是报错:SQL> alter database open; ...

最新文章

  1. 阿里、腾讯基本薪资曝光,资深算法工程师24万美元,高级研究员26万美元
  2. CSMA/CD协议——学习笔记
  3. WinAPI: GetUserName - 获取当前用户名
  4. oracle 数据库数据迁移解决方案
  5. 使用jQuery插件realshadow实现超酷真实阴影效果
  6. gstat | 空间插值(三)——克里金插值之泛克里金和简单克里金
  7. C#/.net 中的事件与代理
  8. python 异常处理小结 try except raise assert
  9. 小米路由器mini刷老毛子教程
  10. qrc路径_Qt中的qrc文件
  11. 创建多线程(8种方式)
  12. 91卫图助手下载器永久免费啦!!
  13. 图片太大怎么压缩变小?教你四招快捷压缩图片
  14. 帝国cms 自动生成html,帝国CMS静态生成为一行代码教程
  15. 关于nvidia-smi和nvcc -V显示的cuda版本不一致的问题
  16. Coremail论客全球安全生态合作伙伴召集令正式启动
  17. HPUX系统启动后主机名为unknown的解决办法
  18. [转]gps中的广义和狭义相对论效应
  19. 交换element-ui中$confirm弹出框的确定和取消按钮位置
  20. 运维平台权限表结构设计

热门文章

  1. vue solt 属性浅析
  2. 区块链现状:最初的炒作消退,将迎来大量新应用(第一部分)
  3. 亿级流量系统架构之如何支撑百亿级数据的存储与计算
  4. python 学习之 WINDOWS 注册表学习(一)
  5. iOS之 随笔Xcode7的lipo
  6. performSelector:withObject:afterDelay: 精要概览(持续更新)
  7. 超级简洁的xml解析框架:TBXML
  8. CSS中expression怎么用? CSS expression详解
  9. php如何写代码禁用广告,不再显示广告案例(php操作cookie)
  10. excel loc() python_python pandas df.loc[]的典型用法