oracle锁类型tx,Oracle中的锁类型
Oracle中的锁类型主要分以下3种:
DML锁(DML lock):DML 代表数据操纵语言(Data Manipulation Language)。一般来讲,表示select,insert,update,merge和delete语句。DML锁机制允许兵法之行数据修改。例如,DML锁可能是特定数据行上的锁,或者是锁定表中所有行的表级锁。
DDL锁(DDL lock):DDL代表数据定义语言(Data Definition Language),如create和alter语句等。DDL锁可以保护对象结构定义。
内部锁和闩:Oracle使用这些锁来保护其内部数据结构。例如,Oracle解析一个查询并生成优化的查询计划时,它会把库缓存“临时闩”,将计划放在耐,以供其他绘画使用。闩(latch)是Oracle采用的一种轻量级的低级串行化设备,going 能上类似于锁。闩是数据库中导致竞争的一个常见原因。
下面我们主要看看DML锁和DDL锁。
DML锁中主要为TX锁和TM锁。TX锁为事务锁,事务发起第一个修改时会得到TX锁(事务锁),而且会一直持有这个锁,直至事务执行提交(commit)或回滚(rollback)。
TM(DML Enqueue)锁用于确保在修改表的内容时,表的结构不会改变。例如,如果更新了一个表,会得到这个表的一个TM锁。这会防止另一个用户在该表上执行DROP或ALTER命令。如果表上有TM锁,而另一个用户试图在这个表上执行DDL,就会得到一个ORA-00054的错误提示。
查看TM锁,可以直接查看v$locked_object视图,关于v$locked_object视图,Oracle官方文档的解释如下:
This view lists all locks acquired by every transaction on the system. It shows which sessions are holding DML locks (that is, TM-type enqueues) on what objects and in what mode.
TM锁的类型:0 none
1 NULL Select
2 SS(Row-S) 行级共享锁,其他对象只能查询这些数据行 Select for update、Lock for update、Lock row share
3 SX(Row-X) 行级排它锁,在提交前不允许做DML操作 Insert、Update、Delete、Lock row share
4 S(Share) 共享锁 Create index、Lock share
5 SSX(S/Row-X) 共享行级排它锁 Lock share row exclusive
6 X(Exclusive) 排它锁 Alter table、Drop table、Drop index、Truncate table 、Lock exclusive
对于DDL锁,可以在v$lock视图中明显看到,v$lock.lock_type=DL
0000000090D8F1F8 0000000090D8F250 34 TO 79833 1 3 0 1951 0
0000000090D8F738 0000000090D8F790 35 AE 100 0 4 0 3351 0
000000008F637248 000000008F6372C0 37 TX 458782 1359 6 0 2 0
0000000090D8F118 0000000090D8F170 37 AE 100 0 4 0 3345 0
00007FA09E881C20 00007FA09E881C80 37 TM 88590 0 4 0 2 0
0000000090D8E680 0000000090D8E6D8 37 DL 88590 0 3 0 2 0
0000000090D8E5A0 0000000090D8E5F8 37 DL 88590 0 3 0 2 0
ADDR KADDR SID TY ID1 ID2 LMODE REQUEST CTIME BLOCK
---------------- ---------------- ---------- -- ---------- ---------- ---------- ---------- ---------- ----------
00007FA09E881C20 00007FA09E881C80 37 TM 18 0 3 0 2 0
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23850820/viewspace-2122302/,如需转载,请注明出处,否则将追究法律责任。
oracle锁类型tx,Oracle中的锁类型相关推荐
- 常见oracle数据类型及其在java中的对应类型
SQL数据类型 JDBC类型代码 标准的Java类型 Oracle扩展的Java类型 1.0标准的JDBC类型: CHAR java.sql.Types.CHAR java.lang.String o ...
- mysql中的锁的指令_mysql中的锁
MYSQL不同的存储引擎支持不同的锁的机制 MyISAM 支持表锁,InnoDB支持表锁和行锁 表锁,行锁比较 表锁:开销小,加锁快:不会出现死锁:锁定力度大,发生锁冲突概率高,并发度最低 行锁:开销 ...
- Redis实现分布式锁全局锁—Redis客户端Redisson中分布式锁RLock实现
2019独角兽企业重金招聘Python工程师标准>>> 1. 前因 以前实现过一个Redis实现的全局锁, 虽然能用, 但是感觉很不完善, 不可重入, 参数太多等等. 最近看到了一个 ...
- 同步锁 php,python线程中同步锁详解
这篇文章主要为大家详细介绍了python线程中同步锁的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 在使用多线程的应用下,如何保证线程安全,以及线程之间的同步,或者访问共享变量等问题是十 ...
- 常见的锁策略、synchronized中的锁优化机制
一.常见的锁策略 锁策略,和普通程序猿基本没啥关系,和 "实现锁" 的人才有关系的 这里所提到的锁策略,和 Java 本身没关系,适用于所有和 "锁" 相关的情 ...
- 随机数在java 自旋锁的运用_Java 中自旋锁的实现
Java中初始是使用mutex互斥锁,因为互斥锁是会线程等待挂起,而对获取锁后的操作时间比较短暂的应用场景来说,这样的锁会让竞争锁的线程不停的park,unpark 的操作,这样的系统的调用性能是非常 ...
- 如何将cv::Mat类型转换为imgui中的ImTextureID类型
背景: 我原来的工程是使用opencv的,所以程序中的图像都是表示为cv::Mat类型,为了能够在imgui窗口中显示我的cv::Mat的图像,我找到了下面这个函数: void ImGui::Imag ...
- c语言 地址类型,C语言中的地址类型
第!!卷!第"期 #$%&!!!'$&" ! ! ! ! ! 平!原!大!学!学!报 ()*+',-)./0'12*,'*'0#3+4052 ! ! ! ! !66 ...
- mysql数据库中常用的类型_MySQL数据库中常用字段类型
MySQL数据库中常用字段类型 整数型:TINYINT,SMALLINT,INT,BIGINT 小数型:FLOAT,DOUBLE,DECIMAL(M,D) 字符型:CHAR,VARCHAR 日期型:D ...
最新文章
- mysql 切换数据库方案
- 致Oracle DBA 的一封信 (网上流传)
- java 如何让HashMap变成线程安全的
- 【NLP】 深入浅出解析BERT原理及其表征的内容
- Java中字符串和数字间转换
- 前端开发 —— BOM
- Microsoft Visual Studio Tools for AI
- 微课|玩转Python轻松过二级:第1章课后习题解答
- C++中继承和派生详解(公有、私有、保护继承的区别)
- php中is upload,PHP中,文件上传
- oracle安装失败 主机名_PeopleTool 8.58.04 安装
- roseha linux,RoseHA 9.0 for Linux快速安装说明_v2.0-2015-04.pdf
- 瞅瞅Levels.fyi发布的2020年度程序员收入报告
- JS eval json unexpected token :
- 各种音视频编解码学习详解之 编解码学习笔记(九):QuickTime系列
- 洛谷 P1653 猴子 解题报告
- 40个经典的社交心理学现象
- 转载 注解@PostConstruct与@PreDestroy讲解及实例 - 云淡风轻、仅此一抹 - 博客频道 - CSDN.NET http://blog.csdn.net/yaerfeng/art
- 阿里聚安全 博客 ------安卓动态调试七种武器之长生剑
- 80后十大烦恼的特征