ORACLE数据库锁详解

大家好!我是晓彬,今天我和大家一起分享ORACLE数据库的锁。在讲锁之前我们需要先介绍一下数据库的事务。

一、数据库事务:事务是恢复和并发控制的基本单位,事务具有以下四个特性:

1、原子性:事务中的动作要么都发生,要么都不发生。

2、一致性:事务将数据库从一种状态转变为下一种状态。

3、隔离性:一个事务的影响在该事务提交之前,其他事务对该事务不可见。

4、持久性:事务一旦提交,其结果就是永久性的。

简单的讲事务就是一条或多条SQL语句加上以上四个特性就是事务。

二、下面我们介绍ORACLE数据库锁

1、ORACLE数据库锁定义:锁是管理共享资源的并发访问,数据库中使用锁是为了支持对共享资源的并发访问,并且保持数据完整性和一致性。

2、ORACLE数据库锁分类:

(1)DML锁:DML是指SELECT、INSERT、UPDATE、MERAGE、DELETE语句。DML锁机制允许并发执行修改数据。DML锁可以锁定数据库表中的特定行或者锁定表中所有行。DML锁又细分为TX锁和TM锁

   A  TX锁:事务发起第一个修改时就会得到一个TX锁。TX锁会被一直持有,直到事务被提交COMMIT或者回滚ROLLBACK。ORACLE锁执行过程简介:第一、找到想要锁定数据行地址。第二、到达这行。第三、锁定此行(如果该行被其他事务锁住,那么开始排队等待其他事务结束在锁)。

   B  TM锁:TM锁用于确保在修改表的数据时,表的结构不会发生变化。简单的说就是不能再该表做DROP或者ALTER操作。

(2)DDL锁:DDL是指CREAT、ALTER语句,DDL语句可以保护数据库对象结构定义。DDL锁又细分三种类型锁

   A  排他DDL锁:此锁会防止其他会话得到他们自己的DDL锁或者TM锁,表上加了此锁其他会话将不能修改该表的表结构。

  B  共享DDL锁:这些锁会保护对象结构,使对象结构不会被其他会话修改,但是可以修改数据。

 C  可中断解析锁:这些锁允许一个数据库对象向其他对象注册依赖性,如果在被依赖的对象上做DDL操作,ORACLE会查看已经注册的依赖对象列表并使这些依赖对象无效,故而这些锁是可中断的,他们不能阻止DDL操作。

(3)内部锁和闩(latch):这些锁是用来保护内部数据结构。闩是轻量级的串行设备,用于协调对共享数据结构、对象和文件的多用户访问。闩用于保护一些内存结构比如数据库缓冲区缓存和共享池中的缓存。

(4)互斥锁:互斥锁是一种与闩非常类是的串行化设备。他比闩持有时间更短大约只有1/5闩持有时间,占用内存更少,大约只有1/7闩占用内存。

ORACLE数据库锁详解


上一篇:Mysql---基本SQL语法


下一篇:DML语言