Oracle - 锁

article/2025/8/19 1:39:46

锁概念

锁出现在数据共享的环境中,它是一种机制,在访问相同资源时,可以防止事务之间的破坏性交互。例如,在多个会话同时操作某表时,优先操作的会话需要对其锁定。

事务的分离性要求当前事务不能影响其他的事务,所以当多个会话访问相同的资源时,数据库系统会利用锁确保它们像队列一样依次进行。Oracle处理数据时用到的锁是自动获取的,我们不用对此有过多的关注,但Oracle允许我们手动锁定数据。

Oracle利用很低的约束提供了最大程度的并发性,例如某会话正在修改一条记录,那么仅仅该记录会被锁定。而其他会话可以随时做读取操作,但读取的依然是修改前的数据。

Oracle的锁保证了数据的完整性。例如,当一个会话对表A的某行记录进行修改时,另一个会话也来修改该行记录,在没有任何处理的情况下保留的数据会有随机性,而这种数据是没有任何意义的,为脏数据。如果此时使用了行级锁,第一个会话修改记录时封锁该行,那么第二个会话此时只能等待,这样就避免了脏数据的产生。

锁的分类

Oracle中分为两种模式的锁,一种是排他锁(X锁),另一种是共享锁(S锁)。
排他锁也可以叫写锁。这种模式的锁防止资源的共享,用做数据的修改。假如有事务T给数据A加上该锁,那么其他的事务将不能对A加任何的锁,所以此时只允许T对该数据进行读取和修改,直到事务完成将该类型的锁释放为止。
共享锁也可以叫读锁。该模式锁下的数据只能被读取,不能被修改。如果有事务T给数据A加上共享锁后,那么其他事务不能对其加排他锁,只能加共享锁。加了该锁的数据可以被并发地读取。
锁是实现并发的主要手段,在数据库中应用频繁,但很多都由数据库自动管理,当事务提交后会自动释放锁。

锁的类型

Oracle为了使数据库实现高度的并发访问,它使用了不同类型的锁来管理并发会话对数据对象的操作。Oracle的锁按作用对象不同分为如下几种类型。

DML锁:该类型的锁被称为数据锁,用于保护数据。
DDL锁:可以保护模式中对象的结构。
内部闩锁:保护数据库的内部结构,完全自动调用。

DML

其中,DML锁主要保证了并发访问时数据的完整性。如果再细分,它又可以分为如下两种类型的锁:
1)行级锁(TX),也可以称为事务锁。当修改表中某行记录时,需要对将要修改的记录加行级锁,防止两个事务同时修改相同记录,事务结束,该锁也会释放,是粒度最细的锁。该锁只能属于排他锁(X锁)。
2)表级锁(TM),主要作用是防止在修改表的数据时,表的结构发生变化。例如,会话S在修改表A的数据时它会得到表A的TM锁,而此时将不允许其他会话对该表进行变更或删除操作。

在执行DML操作的时候,数据库会先申请数据对象上的共享锁,防止其他的会话对该对象执行DDL操作。一旦申请成功,则会对将要修改的记录申请排他锁,如果此时其他会话正在修改该记录,那么等待其事务结束后再为修改的记录加上排他锁。

表级锁包含如下几种模式:
ROW SHARE,行级共享锁(RS)。该模式下不允许其他的并行会话对同一张表使用排他锁,但允许其利用DML语句或lock命令锁定同一张表中的其他记录。SELECT … FROM FOR UPDATE语句就是给记录加上了RS锁。
ROW EXCLUSIVE,行级排他锁(RX)。该模式下允许并行会话对同一张表的其他数据进行修改,但不允许并行会话对同一张表使用排他锁。
SHARE,共享锁(S)。该模式下,不允许会话更新表,但允许对表添加RS锁。
SHARE ROW EXCLUSIVE,共享行级排他锁(SRX)。该模式下,不能对同一张表进行DML操作,也不能添加S锁。
EXCLUSIVE,排他锁(X)。该模式下,其他的并行会话不能对表进行DML和DDL操作,该表只能读。

DDL

DDL锁也可以称为数据字典锁,主要作用是保护模式中对象的结构。当执行DDL操作时,首先Oracle会自动地隐式提交一次事务,然后自动地给处理对象加上锁;当DDL结束时,Oracle会隐式地提交事务并释放DDL锁。与DML不同的是,用户不能显式地要求使用DDL锁。DDL锁分为如下3类:
Exclusive DDL Lock,排他DDL锁定。如果对象加上了该类型的锁,那么对象不能被其他会话修改,而且该对象也不能再增加其他类型的DDL锁。如果是表,此时可以读取数据。
Shared DDL Lock,共享DDL锁定。保护对象的结构,其他会话不能修改该对象的结构,但是允许修改数据。
Breakable Parsed Lock,能打破的解析锁定。该类型的锁可以被打断,不能禁止DDL操作。

在这里插入图片描述

系统管理Lesson 10. Managing Data Concurrency

V$LOCK
3

select distinct lmode from v$lock order by 1;

居然没有lmode=5的。。。
在这里插入图片描述


http://chatgpt.dhexx.cn/article/hr4ITnxa.shtml

相关文章

用友数据库错误“未能读取并闩锁页(1:3355)(用闩锁类型SH)”修复

客户硬盘无法识别,检测后,硬盘有坏道,由于数据库正在坏道上,所以恢复出来的用友数据库无法附加。 通过无日志附加后,做DBCC检测数据库出现以下错误: “消息8966,级别16,状态1&#x…

Mysql中锁的类型有哪些?

Mysql中锁的类型有哪些? 1. 基于锁的属性分类:共享锁、排他锁2. 基于锁的粒度分类:行级锁(INNODB)、表级锁(INNODB、MYISAM)、页级锁(BDB引擎)、记录锁、间隙锁、临键锁。…

mysql 常见锁的类型(一)

文章目录 一、锁的分类1.1 加锁的目的1.2 锁的类别 二、乐观锁和悲观锁2.1. 乐观锁2.2. 悲观锁: 三、共享锁与排他锁四、表锁五、意向锁六、行级锁七、记录锁(Record Locks)八、间隙锁(Gap Locks)九、临键锁&#xff0…

MySQL-InnoDB常用锁类型解析

Shared(乐观锁) and Exclusive Locks(互斥锁): InnoDB有两种锁类型,Shared(s) and Exclusive(x) Locks(乐观锁和互斥锁)。 Shared&…

MySql InnoDB锁类型

MySql InnoDB锁类型 从类型上来分类,InnoDB存储引擎实现了两种标准的锁 共享锁(S-Lock):允许事务读一行数据 排它锁(X-Lock):允许事务删除或者更新一行数据 如果一个事务获取了S锁,那么其他事务也可以立即获得S锁,…

锁的分类总结

锁的分类是从不同角度去看的。同一个锁也可以同时属于多种类型。 一、乐观锁与悲观锁 1. 互斥同步锁的劣势 阻塞和唤醒会带来性能的劣势 用户态和核心态切换上下文切换检查是否有被阻塞线程需要被唤醒等等 可能出现永久阻塞的问题:持有锁的线程永久阻塞了&#…

锁的介绍和分类(轻量级锁 重量级锁 偏向锁 自旋锁 互斥锁)

目录 公平锁 非公平锁 非公平锁 公平锁 可重入锁 不可重入锁 可重入锁(递归锁) 不可重入锁 轻量级锁 重量级锁 偏向锁 重量级锁 自旋锁(循环上锁) 轻量级锁 轻量级锁的释放 偏向锁 自旋锁和互斥锁 自旋锁 互斥锁 为何要使用自旋锁 自旋…

最全锁种类

你可能听说过很多锁,也看到过很多文章讲解锁,这篇我在这里将对锁的不同分类进行描述锁的设计 互斥锁–共享锁 互斥锁:顾名思义,就是互斥的,意思就是当前同步代码块只能被一个线程访问,sync、reentrantlock、…

锁的类型有哪些

锁的类型有哪些 基于锁的属性分类:共享锁、排他锁。 基于锁的粒度分类:行级锁(INNODB)、表级锁(INNODB、MYISAM)、页级锁(BDB引擎 )、记录锁、间隙锁、临键锁。 基于锁的状态分类:意向共享锁、意向排它锁 共享锁(Share Lock) 共享锁又称读锁&…

Kettle使用教程之Job使用

1、Kettle的Job使用十分简单,这里也只是演示比较简单的操作,创建Job 2、点击转换,然后点击浏览,选择转换对象 3、执行按钮,运行该转换 4、如果需要长期的进行定时转换,可以在Job中的start控件进行配置 转载…

Kettle使用教程之数据同步

Kettle使用教程之数据同步 数据模型原型如下: 1、表输入,针对最新的数据输入的表 2、目标表,需要更新的表 3、两个表都需要进行排序操作 4、合并,根据id进行合并 5、数据同步(包括更新、插入、删除) 6、点击运行,就可…

ETL开发工具KETTLE使用教程

Kettle的建立数据库连接、使用kettle进行简单的全量对比插入更新:kettle会自动对比用户设置的对比字段,若目标表不存在该字段,则新插入该条记录。若存在,则更新。 Kettle简介:Kettle是一款国外开源的ETL工具&#xff0…

ETL工具Kettle使用教程

Kettle使用教程之数据同步 数据同步标识字段 标志字段的值有4种,分别是: “Identical” : 关键字段在新旧数据源中都存在,且域值相同 “changed” : 关键字段在新旧数据源中都存在,但域值不同 “new” : 旧数据源中没有找到该…

Kettle使用教程(一)—— 在MacOS系统中安装 Kettle

Kettle使用教程(一)—— 在MacOS系统中安装 Kettle 一、环境准备二、下载并启动Kettle二、初始化资源库 一、环境准备 Kettle 9.2JDK 1.8 (安装指引)Mysql(安装指引) 二、下载并启动Kettle 首先到官网下…

Kettle使用教程(问题)

关于kettle的介绍此文不做介绍 笔者电脑环境 winoraclejdk1.8kettle7.1 1. 考虑到在在官网下载速度比较慢,在这里可以使用国内的镜像 国内镜像 2. 配置java环境 (1) kettle需要以来java环境,因为没有安装java环境的朋友请移步配置java环境&#xff…

R-P-Faster R-CNN day65 读论文:高分辨率遥感影像综合地理空间目标检测框架

An Efficient and Robust Integrated Geospatial Object Detection Framework for High Spatial Resolution Remote Sensing Imagery 1. Introduction3. Overview of the Proposed R-P-Faster R-CNN Framework3.1. 有效集成区域建议网络与目标检测Faster R-CNN框架3.1.2. RPN与…

多特征融合的高分辨率遥感图像海陆分离——刘思彤

论文阅读笔记 摘要 为解决目前大多数海陆分离方法仅利用单一特征对图像进行处理,从而导致误分割或存在大量孤立区域,造成后续处理工作难度大或无法开展的问题,提出一种联合灰度、梯度和纹理等多特征的海陆分离方法。针对不同的陆地类型选用…

从实现的技术手段细数:高分辨率遥感影像+人工智能的现在和未来

【转自】http://baijiahao.baidu.com/s?id1601901487917871613&wfrspider&forpc 人工智能不可阻挡地向各行业渗透。这一现象,恰巧撞上了“商业遥感卫星发射潮”。这似乎预示了某种潜流。此刻,从事卫星遥感影像解译和大数据提取的专业人士、科研…

高分辨率光学遥感影像舰船目标检测与识别算法研究(尹莹莹)

论文阅读笔记 摘要 本文主要研究海陆背景下的光学遥感图像舰船目标检测与识别技术,重点研究了海陆分离、舰船目标疑似区域检测技术与疑似区域目标识别技术。 海陆分离: 采用了OTSU与形态学相结合的方法实现海路区域初步划分;再以孤立区域内…

基于高分辨率影像的潍坊大棚遥感提取

1 背景 朋友,当你坐在经过潍坊的火车上的时候,是否被窗外的风景震惊过?那一望无际的大棚,像一片海洋,又像一片草原,连接天际,一眼望不到边。在卫星地图上,白茫茫一片,蔚为…