ORACLE中常见的几种锁

摘要:
2级锁包括:Selectforupdate、LockForUpdate、LockRowShareselectforupdate。当对话使用forupdate子字符串打开游标时,返回集中的所有数据行都将在行级别以独占方式锁定。其他对象只能查询这些数据行,不能执行更新、删除或选择更新操作。三级锁包括:Insert、Update、Delete、LockRowExclusive。在不提交的情况下插入相同的记录不会响应,因为下一个3锁将始终等待最后一个3锁定,我们必须释放最后一个才能继续工作。4级锁包括:如果模式为2,3,4,则CreateIndex、LockSharelocked_DML操作将不受影响,但DDL操作将提示ora-00054错误。0005400000,“resourcebusy并获取指定的NOWAIT”//*原因:Resourceinterestuse.//*操作:需要重试。5级锁包括:LockShareRowExclusive。具体而言,当存在主键和外键约束时,更新/删除;可能会生成4,5锁。

ORACLE中常见的几种锁:

0:none
1:null 空
2:Row-S 行共享(RS):共享表锁,sub share
3:Row-X 行独占(RX):用于行的修改,sub exclusive
4:Share 共享锁(S):阻止其他DML操作,share
5:S/Row-X 共享行独占(SRX):阻止其他事务操作,share/sub exclusive
6:exclusive 独占(X):独立访问使用,exclusive

 

数字越大锁级别越高, 影响的操作越多。

1级锁有:Select,有时会在v$locked_object出现。

2级锁有:Select for update,Lock For Update,Lock Row Share
select for update当对话使用for update子串打开一个游标时,所有返回集中的数据行都将处于行级(Row-X)独占式锁定,其他对象只能查询这些数据行,不能进行update、delete或select for update操作。

3级锁有:Insert, Update, Delete, Lock Row Exclusive
没有commit之前插入同样的一条记录会没有反应, 因为后一个3的锁会一直等待上一个3的锁, 我们必须释放掉上一个才能继续工作。

4级锁有:Create Index, Lock Share
locked_mode为2,3,4不影响DML(insert,delete,update,select)操作, 但DDL(alter,drop等)操作会提示ora-00054错误。
00054, 00000, "resource busy and acquire with NOWAIT specified"
// *Cause: Resource interested is busy.
// *Action: Retry if necessary.

5级锁有:Lock Share Row Exclusive
具体来讲有主外键约束时update / delete ... ; 可能会产生4,5的锁。

6级锁有:Alter table, Drop table, Drop Index, Truncate table, Lock Exclusive

以DBA角色, 查看当前数据库里锁的情况可以用如下SQL语句:

col owner for a12
col object_name for a16
select b.owner,b.object_name,l.session_id,l.locked_mode
from v$locked_object l, dba_objects b
where b.object_id=l.object_id
/

select t2.username,t2.sid,t2.serial#,t2.logon_time
from v$locked_object t1,v$session t2
where t1.session_id=t2.sid order by t2.logon_time
/

如果有长期出现的一列,可能是没有释放的锁。我们可以用下面SQL语句杀掉长期没有释放非正常的锁:

alter system kill session 'sid,serial#';

如果出现了锁的问题, 某个DML操作可能等待很久没有反应。

当你采用的是直接连接数据库的方式,也不要用OS系统命令 $kill process_num 或者 $kill -9 process_num来终止用户连接,因为一个用户进程可能产生一个以上的锁, 杀OS进程并不能彻底清除锁的问题。

 


 

免责声明:文章转载自《ORACLE中常见的几种锁》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇查询指定距离内的快递柜或者店铺Vue + Element UI 实现权限管理系统 前端篇(七):功能组件封装下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Idea常用插件整合

官方网站:https://plugins.jetbrains.com/plugin/228-sql-query-plugin6.IdeaVim基于IntelliJ的Vim仿真插件。注意:如果打开WebInspector,那么CSS/JavaScript同步和元素高亮显示不起作用“pluginisdebuggingthistab”信息栏的可用性问题官方网站:h...

凤凰系统(Phoenix OS)PC版安装,电脑上体验功能丰富的安卓系统

Tid=9074&fid=12安装前准备下载最新的PhoenixOSIO安装映像,并将其刻录到USB闪存驱动器;如果使用Windows操作系统,建议使用UltraISO刻录。下载地址:http://www.phoenixos.com/download_x86开始安装。1.重新启动机器,从启动选项中选择USB闪存磁盘启动,然后选择“Installati...

无法将您的Kindle连接到Wi-Fi网络怎么办-kindle无法连接wifi-kindle无法连接手机热点

问题描述:当连接到Wi-Fi或移动热点时,Kindle会弹出提示:如果我无法将您的Kindle连接到Wi-Fi网络,该怎么办。步骤1:通过USB数据线将Kindle连接到计算机。2.连接后,我电脑的磁盘将像一个USB闪存驱动器,Kindle磁盘将出现在其中。3.进入Kindle磁盘。在Kindle磁盘下,右键单击创建一个名为WIFI_NO_NET_PROBE...

axios 处理超时问题 记录

前言:记录最近两天处理请求超时的逻辑。...

USBWriter之后恢复磁盘大小

USBWriter之后恢复磁盘大小的方法:1,cmd2,diskpart3,listdisk4,selectdisk*5,clean6、在我的电脑点右键,管理,然后选磁盘管理,选择USB后,右键,然后再新建卷就可以了。...

微信小程序生成带参数的二维码(小程序码)独家asp.net的服务端c#完整代码

1) 我第一次使用wx。小程序端请求调用API,发现这是一个坑!@-_~Page:'pages/index/index',//在此处填写要跳转到的小程序页面。你不能在它前面添加/oh。发布后必须为1024页//小程序代码的边长,以像素为单位,范围[2801280]},标头:{'content-type':“application/json;charset=U...