知识大全 Oracle锁的运行机制原理的描述
Posted 知
篇首语:做了好事受到指责而仍坚持下去,这才是奋斗者的本色。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle锁的运行机制原理的描述相关的知识,希望对你有一定的参考价值。
Oracle锁的运行机制原理的描述 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
以下的文章抓哟是对Oracle锁的运行机制原理的描述 我们大家都知道在现代的多用户与多任务系统中 出现多个用户同时访问共享的某个对象的几率特别大 这个对象可能是表 行 或者内存结构
为了解决多个用户并发性访问带来的数据的 安全性 完整性及一致性问题 必须要有一种机制
来使对这些共享资源的并发性访问串行化 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操作而言 并不需要任何 Oracle锁 所以即使记录被锁定 select语句依然可以执行 实际上 在此情况下 Oracle是用到undo的内容进行一致性读来实现的
在 Oracle数据库中 当一个事务首次发起一个DML语句时就获得一个TX锁 该锁保持到事务被提交或回滚 在数据行上只有X锁(排他锁) 就是说TX锁 只能是排他锁 在记录行上设置共享锁没有意义 当两个或多个会话在表的同一条记录上执行DML语句时 第一个会话在该条记录上加锁 其他的会话处于等待状 态 当第一个会话提交后 TX锁被释放 其他会话才可以加锁
在数据表上 Oracle默认是共享锁 在执行dml语句的时候 Oracle会先申请对象上的共享锁 防止其他会话在这个对象上做ddl语句 成功申请表上的共享锁后 再在受影响的记录上加排它所 防止其他会话对这些做修改动作
这样在事务加锁前检查TX锁相容性时就不用再逐行检查Oracle锁标志 而只需检查TM锁模式的相容性即可 大大提高了系统的效率 TM锁包括了SS SX S X等多种模式 在数据库中用 - 来表示 不同的SQL操作产生不同类型的TM锁 如表 所示
和锁相关的性能视图介绍
v$lock
SID 会话的sid 可以和v$session 关联
TYPE 区分该锁保护对象的类型 如tm tx rt mr等
ID 锁表示 详细见下说明
ID 锁表示 详细见下说明
LMODE 锁模式 见下面说明
REQUEST 申请的Oracle锁模式 同lmode
CTIME 已持有或者等待锁的时间
BLOCK 是否阻塞其他会话锁申请 :阻塞 :不阻塞
LMODE取值 数字越大锁级别越高 影响的操作越多
级锁
Select 有时会在v$locked_object出现
级锁即RS锁
相应的sql有 Select for update Lock xxx in Row Share mode select for update
cha138/Article/program/Oracle/201311/16509相关参考
解析Oracle多粒度锁的验证步骤 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 创建测试表
查找Oracle用户锁的DLLSQL 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 查找Orac
我对ORACLE数据锁的一点体会 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 我对文章中意向锁
Oracle数据库锁的常用类型有哪些 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 此文章主要是
Oracle数据库查找被锁以及解锁的解决办法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! or
加锁是为了防止一些操作而进行的比如说共享锁可以防止别的事务加上排他锁如果多个事物对同一张表都加上共享锁的话也就都不能修改了可以进行读操作如果只有一个事物加上共享锁是可以修改的 而排他锁呢则是不能
Oracle连接数过多释放机制 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Oracle服务器
Oracle高级排队机制 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 包 子程序 说明
Oracle数据库提供的恢复机制 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Oracle数据
利用Oracle的同意安全机制来控制访问 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Orac