ORACLE 中的lock 机制

mysql中使用 NOWAIT 和 SKIP LOCKED 实现锁定读取并发性 Locking Read Concurrency with NOWAIT and SKIP LOCKED 是一种在数据库中实现并发读取锁定的方法。通过使用 NOWAIT 和 SKIP LOCKED 选项,可以让查询立即执行,而不需要等待其他事务释放行锁。NOWAIT 会立即失败并返回错误,而 SKIP LOCKED 则会从结果集中排除已被锁定的行。尽管跳过已被锁定的行可能导致数据的不一致视图,但在多个会话访问同一个队列类似的表时,可以用于避免锁竞争。然而,请注意使用 NOWAIT 或 SKIP LOCKED 阅读详情
为了进行LOCK的探究,我建立了一个测试表 test ,结构和测试数据如下:
SQL> select * from test;

        ID NAME
---------- ----------
         6 yoxi
         2 robinson
         2 tttt
         3 david
         4 jason
         5 lucy
         1 test

已选择7行。

row share(行共享)如果对某个表执行了row share锁定,那么,其他的SESSION就不能针对该表执行排他(exclusive)锁定,但是可以执行其他任意锁定。也就是说某个session对该表执行了row share锁定,那么其他session除了drop 命令不能执行,其他dml都可执行。
session 1中:
SQL> lock table test in row share mode;
表已锁定。
session 2中:
SQL> lock table test in row share mode;
表已锁定。
SQL> commit;
提交完成。
SQL> lock table test in row exclusive mode;
表已锁定。
SQL> commit;
提交完成。
SQL> lock table test in share mode;
表已锁定。
SQL> commit;
提交完成
SQL> lock table test in exclusive mode nowait;
lock table test in exclusive mode nowait
           *
第 1 行出现错误:
ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源
SQL> update test set id=10;
已更新7行。
SQL> rollback;
回退已完成。
SQL> drop table test;
drop table test
           *
第 1 行出现错误:
ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源 //其实drop table 命令会对表进行exclusive 锁定
row exclusive(行排他) 当执行insert,update,delete就会获得一个行排他锁,这个锁具有row share的所有特征,如果一个session获得了一个row exclusive 锁,那么另外的session 就不能对该表进行exclusive锁定,也不能对该表进行share锁定,可以对该表进行dml操作,但是不能drop;

session  1中
SQL> lock table test in row exclusive mode;
表已锁定。
session 2中:
SQL> lock table test in row share mode;
表已锁定。
SQL> commit;
提交完成。
SQL> lock table test in row exclusive mode;
表已锁定。
SQL> commit;
提交完成。
SQL> lock table test in share mode nowait;
lock table test in share mode nowait
*
第 1 行出现错误:
ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源
SQL> lock table test in exclusive mode nowait;
lock table test in exclusive mode nowait
*
第 1 行出现错误:
ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源

share(共享锁) 当一个session对某个表进行了share锁定,那么其他的session就不能以exclusive ,row exclusive 方式锁定该表,也就是说,如果不能row exclusive的话,就不能进行insert,update ,delete 操作,不能获得exclusive锁定就不能进行drop操作。
session 1中
SQL> lock table test in share mode;
表已锁定。
session 2中
SQL> lock table test in row share mode;
表已锁定。
SQL> lock table test in row exclusive mode nowait;
lock table test in row exclusive mode nowait
*
第 1 行出现错误:
ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源
SQL> lock table test in share mode;
表已锁定。
SQL> commit;
提交完成。
SQL> lock table test in exclusive mode nowait;
lock table test in exclusive mode nowait
*
第 1 行出现错误:
ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源

exclusive(排它锁)当执行drop命令,就会产生一个排它锁。顾名思义,只要某个session 对某个表进行了exclusive 锁定,那么其他session就不能对该表进行任何锁定。
session 1中
SQL> lock table test in exclusive mode;
表已锁定。
session 2中
SQL> lock table test in row share mode nowait;
lock table test in row share mode nowait
*
第 1 行出现错误:
ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源
其他锁定就不用测试了,因为 row share都不能获得 其他锁定就更不能获得了

share row exclusive(共享行排他)如果某个session获得了一个share row exclusive锁定,那么其他session就只能获得对该表的row share锁定,也就是说其他session不能对该表进行 insert ,update,delete,drop 操作.row share 锁定 除了防止drop 一无是处 ....
session 1中
SQL> lock table test in share row exclusive mode;
表已锁定。
session 2中
SQL> lock table test in row share mode nowait;
表已锁定。
SQL> commit;
提交完成。
SQL> lock table test in row exclusive mode nowait;
lock table test in row exclusive mode nowait
*
第 1 行出现错误:
ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源
SQL> lock table test in share mode nowait;
lock table test in share mode nowait
         *
第 1 行出现错误:
ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源
SQL> lock table test in exclusive mode nowait;
lock table test in exclusive mode nowait
*
第 1 行出现错误:
ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源

总结一下:

1.如果一个table 被一个session锁定,无论什么锁定,另外的session就不能获得对于该表exclusive的锁定,也就是说不能删除该表,其实很容易相同,别人在用那个表,你去把表给删除了,肯定是不允许的.

2.如果能够对某个表进行row exclusive 锁定,那么肯定可以执行dml操作

3.可以这样理解share锁,顾名思义,共享锁是用来共享的,既然是共享,所以其他用户只能查看,不能更改。

4.可以这样理解exclusive锁,顾名思义,排它锁就是独享的,其他用户只能查看,不能修改。

注意 :上面通过lock 命令的lock 只能获得 TM(表) lock

            而通过 update ,delete ,insert 产生的lock 有两种,一种是TM lock,一种是TX lock, tx lock 是事务锁的意思

            select........... for update 也会得到一个TX lock 以及一个 row exclusive lock 


转载地址:http://blog.youkuaiyun.com/robinson1988/article/details/4675371

CMOS图像传感器——工作原理 CMOS图像传感器的曝光与读出 阅读详情

相关推荐

CentOS8安装NVIDIA显卡驱动、CUDA和Anaconda

CentOS8安装NVIDIA显卡驱动和CUDA 参考:CentOS nvidia+cuda+cudnn 安装 安装英伟达显卡驱动 1、检查是否安装了NVIDIA的GPU(硬件层面): lspci | grep -i nvidia 2、安装GCC、kernal组件、dkms等 sudo yum install gcc sudo yum install gcc-c++ sudo yum -y install kernel-devel sudo yum -y install kernel-headers s

智慧的旋风的博客 1万+

oracle模式和表,Oracle 的锁表机制--EXCLUSIVE&SHAVE(共享和独占模式)

1、共享方式的表封锁 共享方式的表封锁是对表中的所有数据进行封锁,该锁用于保护查询数据的一致性,防止其它用户对已封锁的表进行更新。其它用户只能对该表再施加共享方式的锁,而不能再对该表施加独占方式的封锁,共享更新锁可以再施加,但不允许持有共享更新封锁的进程做更新。共享该表的所有用户只能查询表中的数据,但不能更新。共享方式的表封锁只能由用户用SQL语句来设置,基语句格式如下: LO...

weixin_35003319的博客 619

压电阀控制器设计-总章

本文章用于回顾记录本人制作压电阀控制器的关键技术,本人所制作压电阀控制器已经上市得到应用,特在此对一些关键技术进行回顾记录,欢迎从事压电控制及压电阀相关人员一起讨论

qq_42712859的博客 850

oracle table-lock的5种模式

Oracle中的锁定可以分为几类:DML lock(data lock),DDL lock(dictionary lock)和internal lock/latch。 DML lock又可以分为row lock和table lock。row lock在select.. for update/insert/update/delete时隐式自动产生,而table lock除了隐式产生,也可以调用lo

skiof007的专栏 1175

ABB机器人姿态与四元数(笔记)

通常使用机器人作业时,机器人的法兰轴(5轴)往往是垂直与作业平面的,此时需要将机器人的姿态调整(示教)到垂直于工作平面的状态,然后记录当前的姿态,作为之后作业的参考标准姿态。不同机器人表示控件姿态的方式不一样,但也无外乎3中:旋转矩阵、欧拉角和四元数。 ABB机器人使用的是四元数(可转欧拉角)作为机器人控件姿态的表示方式。这里主要是记录在不通过示教的方式下,如何定义四元数,使机器人达到垂直于工作平面的姿态。 5轴竖直向下(常用):此时,各轴角度为 [0,0,0,0,9...

Zythonista的博客 1万+

MIPI转LVDS芯片调试实战:从Kernel到UEFI的完整点亮流程

本文详细解析了MIPI转LVDS芯片调试的全流程,从Kernel驱动开发到UEFI早期初始化,涵盖I2C通信、电源时序控制等核心挑战。通过LT9211芯片实战案例,提供设备树配置、电源时序优化及显示异常排查等实用技巧,助力工程师高效完成屏幕调试工作。

weixin_30314813的博客 452

oracle锁相关知识与锁表分析

文章转载:https://www.cnblogs.com/zhoading/p/8547320.htm《oracle-数据库的各种-锁-详解》 1、oracle锁 Oracle的锁机制是一种轻量级的锁定机制,不是通过构建锁列表来进行数据的锁定管理,而是直接将锁作为数据块的属性,存储在数据块首部。 也就是说, 每个数据块本身就存储着自己数据块中数据的信息,这个地方叫 ITL( Interested Transaction List), 凡是在这个数据块上有活动的事务,它的信息就会记录在这里面供后续...

ido1ok的博客 754

利用Matlab绘制非线性系统相图:从理论到实践

本文详细介绍了如何利用Matlab进行非线性系统的相图绘制与相平面分析。从理论基础的状态空间转换出发,通过无阻尼线性谐振子和范德波尔振荡器等实例,手把手演示了使用ode45求解器绘制相图、分析平衡点与极限环的完整流程,并分享了方向场绘制、参数分岔探索及常见错误解决方案等高级技巧,为动力学系统分析与控制设计提供了直观强大的可视化工具。

yhn456789的博客 908

Oracle Enqueue lock队列锁机制

你有多了解Oracle Enqueue lock队列锁机制? 概念   Enqueue 队列锁 是 oracle中 主要的 并发访问控制 和锁的机制。   我们耳熟能详的 TM table lock表锁 和 TX 事务锁都是 enqueue 。 enqueue 最多可以有6个模式 , enqueue lock被设计出来用于那些需要较长时间锁机制的场景。 enqueue 的 6个 锁模式分别...

雨花石 1853

Openclaw第3章:进阶部署

本章面向需要在特定环境中稳定运行 OpenClaw 的用户,介绍 Windows、Linux、Docker 以及 Cloudflare Workers 四种进阶部署方式。每种方式各有侧重:Windows 部署适合桌面用户日常使用,Linux 部署适合开发者,Docker 部署适合追求环境隔离的运维场景,Cloudflare Workers 部署则适合希望获得全球边缘网络加速的用户。读者可根据自身环境和需求选择合适的方案,完成本章后可继续阅读第4章了解维护升级流程。

Maynor的博客 1295

01 - 什么是SVM

摘要:SVM(共享虚拟内存)技术使CPU和GPU能共享同一虚拟地址空间,简化异构计算编程。传统模型需手动管理CPU/GPU内存和拷贝数据,而SVM允许直接传递指针,自动处理页面迁移和一致性维护。其核心包括统一地址空间、按需迁移、页面故障处理和一致性管理,显著降低编程复杂度并提升性能。通过HMM框架、MMU通知和GPU页面异常等机制实现高效内存共享,支持复杂数据结构,为异构计算带来便利。

图形/计算GPU的驱动与虚拟化技术分享园地 3138

[整理]Oracle LOCK 机制

  数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。锁机制用于管理对共享资源的并发访问。 根据保护的对象不同,Oracle数据库锁可以分为以下几大类: DML锁(data locks,数据锁),用于保护数据的完整性;主要包括TM锁和TX锁,其中TM锁称...

deyu2539的博客 126

Python时间序列:PaddleTS-时间序列分类

评估的指标采用F1,Precision,Recall,PaddleTS已经基于TSDataset实现了这三个指标的计算,直接调用即可。使用内置的API:get_dataset加载BasicMotions数据集。模型训练完成之后,可以对测试集进行预测并评估。模型保存之后,可以加载模型用于新的数据预测。可以将训练完成的模型保存到指定路径。概率预测 可以返回每个分类的概率。安装paddlets。

斌擎科技 1294

Oracle 锁机制(Lock mechanism)

锁机制的分类 今天我们来了解Oracle中一项重要的机制,锁机制,它在允许最大并发性能的前提下保证数据的一致与完整。很多文章在说到锁机制时,往往写得特别复杂,在各种锁之外,又引入了所谓的”意向锁”等等,同时在该详细的地方,比如锁的兼容性方面,缺乏进一步的解释。所以我倾向”简单粗暴”风格,尽量把内容往简单的写。我们先来看看Oracle锁机制的基本分类。 1)DML locks 2)DDL

好读书,每有会意,便欣然忘食。 1302

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

你有多了解Oracle Enqueue lock队列锁机制?

你有多了解Oracle Enqueue lock队列锁机制?   概念   Enqueue 队列锁 是 oracle中 主要的 并发访问控制 和锁的机制。   我们耳熟能详的 TM table lock表锁 和 TX 事务锁都是 enqueue 。 enqueue 最多可以有6个模式 , enqueue lock被设计出来用于那些需要较长时间锁机制的场景。 enque

badman250的专栏 3万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Oracle中的锁(LOCK)机制

本文结合示例简要的介绍了一下Oracle中锁的机制。

renfengjun 1万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Oracle lock 锁机制 总结

对于lock这个词,要从两方面理解,首先,它代表的是一种控制机制;其次,在这个机制中有个一成员也叫lock。 从机制的角度看,lock框架包括3个组件:resource structure(资源);lock structure(锁);enqueue(排队机制) resource和lock是数据结构,enqueue是使用的算法。 下面看一下lock的组成结构图: resource struc

changyanmanman的专栏 2901

oracle复制机制,深入讲解 oracle LOCK 内部机制

作者简介:----------------------------------------------------@ 孙显鹏,海天起点oracle技术专家,十年从业经验,@ 拥有OCP 11G认证,精通oracle内部原理,擅长调优@ 和解决疑难问题,致力于帮助客户解决生产过程中出@ 现的问题,提高生产效率。@ 爱好书法,周易,中医!@ 微信号:sunyunyi_sun@ 电话--186296...

weixin_29459473的博客 416

ORACLE HANDBOOK系列之十二:锁机制(Lock mechanism)

锁机制的分类 今天我们来了解Oracle中一项重要的机制,锁机制,它在允许最大并发性能的前提下保证数据的一致与完整。很多文章在说到锁机制时,往往写得特别复杂,在各种锁之外,又引入了所谓的”意向锁”等等,同时在该详细的地方,比如锁的兼容性方面,缺乏进一步的解释。所以我倾向”简单粗暴”风格,尽量把内容往简单的写。我们先来看看Oracle锁机制的基本分类。 1)DML locks

南山南的Python和大数据学习笔记 279

oracle 锁的引用,Oracle中的锁(LOCK)机制详解

ITL 引起的阻塞当block中没有多余的空间来添加ITL entry的时候,就会发生阻塞。具体可以看下面的例子:_dexter@FAKE>create table tb_itl (id int , name varchar2(4000)) pctfree 0 initrans 1 ;Tablecreated._dexter@FAKE>insert into tb_itl select...

weixin_39525617的博客 283

通过dbms_lock了解oracle内部enqueue机制

同时被调用的共享代码如下 create or replace function fun_wxc(p1 in varchar2) return number-- result_cache is rs number; begin rs := p1; sys.dbms_lock.sleep(25); return rs; end; 锁代码如下 cr...

weixin_30758821的博客 96

ORACLE HANDBOOK系列之十五:锁机制(Lock mechanism)

锁机制的分类 今天我们来了解Oracle中一项重要的机制,锁机制,它在允许最大并发性能的前提下保证数据的一致与完整。很多文章在说到锁机制时,往往写得特别复杂,在各种锁之外,又引入了所谓的”意向锁”等等,同时在该详细的地方,比如锁的兼容性方面,缺乏进一步的解释。所以我倾向”简单粗暴”风格,尽量把内容往简单的写。我们先来看看Oracle锁机制的基本分类。 1)DML locks 2)DDL ...

weixin_34277853的博客 225
上一篇: alter table move跟shrink space的区别
下一篇: oracle table-lock的5种模式
VagueCoder
博客等级 码龄13年 4粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值