Oracle 锁机制
本文参考自:ORACLE锁机制
1、oracle是一个多用户使用的共享资源,当多个用户并发的操作同一数据行时,那么在oracle数据库中就会存在多个事务操作统一数据行的操作,如果不对并发操作进行控制,那么这些事务可能会操作不正确的数据,破坏数据库的一致性.
2、加锁是是实现数据库并发控制的一个非常重要的技术,当事务对某个数据对象进行操作时,大致的过程如下:
a、先向系统发出请求
b、在对数据对象进行加锁
c、最后进行数据操作,这个过程中当前数据对象只有当前事务(当前会话)可以使用,其他事务都不可以使用,直到当前事务释放锁,其他事务才可以操作当前数据对象
3、Oracle基本的锁类型:
a、排它锁(Exclusive locks)即X锁
当数据对象被加上排它锁之后,其他的事务不能对数据对象进行访问和修改。
b、共享锁(Share Locks)即S锁
当数据对象被加上共享锁之后,其他的事务可以对数据对象进行访问,但是不能修改。
数据库通过这两种基本的锁类型对数据库的事务进行并发控制
4、Oracle锁类型
根据锁保护的对象不同,oralce锁可以分为以下几种:
a、DML锁(data locks)数据锁
b、DDL锁dictionary locks,字典锁 用于保护数据库对象的结构,如表的结构、索引等
c、内部锁和闩(internal locks and latches),保护 数据库的内部结构。
5、DML锁(data locks)数据锁 介绍
在Oracle数据库中DML锁主要是保证并发情况下的数据完整性,DML锁主要包括TM锁(表级锁)和TX锁(行级锁或者事务锁),下面是在Oracle中执行DML语句的加锁过程
a、系统自动在(DML要操作的表)上申请TM类型的锁,具体是什么锁根据操作语句确定