一、锁类型
根据保护的对象不同,Oracle数据库锁可以分为以下几大类:
1.1、DML锁
DML锁(data locks,数据锁),用于保护数据的完整性;一般是指select update、insert、merge、delete 语句。 DML锁机制允许并发执行数据修改,例如,DML锁可能是特定数据行上的锁,或者是锁定表中所有行的表级锁。
1.2、DDL锁(dictionary locks,字典锁)
DDL锁(dictionary locks,字典锁)用于保护数据库对象的结构,如表、索引等的结构定义;DDL 表示数据定义语言,如create 和alter 等
1.3、内部锁和闩
(内部锁和闩internal locks and latches ;System Locks 系统锁),保护数据库的内部结构。 例如oracle解析一个查询并生成优化的查询计划时,它会把库缓存闩上,将查询计划放在那里,以供其他会话使用,闩(latch)是oracle采用的一种轻量级的低串行话设备,功能类似于锁。轻量级是指闩的实现,而不是它的影响。闩是数据库中导致竞争的一个常见原因。
oracle官方文档关于锁的说明::https://docs.oracle.com/cd/E11882_01/server.112/e40540/consist.htm#CNCPT1351
2、DML锁
2.1 TX锁
A row lock, also called a TX lock
行锁,也称为事务锁
事务发起第一个修改时会得