ORACLE LOCK
锁(lock),用于管理对共享资源的并发访问。
Oracle主要有3种锁类型:
l DML Lock:用于保护数据上的锁
l DDL Lock:用于保护结构对象的定义
l 内部锁和闩:用于保护oracle内部数据结构
介绍Oracle锁机制前,先介绍共享锁和排他锁:
共享锁:如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁。获准共享锁的事务只能读数据,不能修改数据。
排他锁:如果事务T对数据A加上排他锁后,则其他事务不能再对A加任任何类型的封锁。获准排他锁的事务既能读数据,又能修改数据。
DML Lock(DML锁)
1. TX锁(事务锁)
事务中开始第一个修改时会得到TX锁,而且一直会持续的拥有这个TX锁,直到事务发生COMMIT或者ROLLBACK。
获得锁信息:
SELECT username,
v$lock.sid,
trunc(id1/power(2,16)) rbs,
bitand(id1,to_number('ffff','xxxx'))+0 slot,
id2 seq,
lmode,
request
FROM v$lock, v$session
WHERE v$lock.type = 'TX'
AND v$lock.sid = v$session.sid
AND v$session.username = 'SCOTT';
/
USERNAME SID RBS SLOT SEQ lmode REQUEST
---------- ----- ---------- ---------- ---------- --------- ----------
SCOTT 52 9 1 433787 6 0
SELECT XIDUSN, XIDSLOT, XIDSQN
FROM v$transaction;
/
XIDUSN XIDSLOT XIDSQN
---------- ---------- ----------
9 1 433787
|
其中,LMODE为锁类型,REQUEST值为0指无其他事务请求,用有此锁,RBS、SLOT和SEQ值与V$TRANSACTION信息匹配,组成事务ID。
LMODE
0,'None(0)',
1,'Null(1)',
2,'Row Share(2)',
3,'Row Exclu(3)',
4,'Share(4)',
5,'Share Row Ex(5)',
6,'Exclusive(6)')
REQUEST
0,'None(0)',
1,'Null(1)',
2,'Row Share(2)',
3,'Row Exclu(3)',
4,'Share(4)',
5,'Share Row Ex(5)',
6,'Exclusive(6)')
2. TM锁(DML enqueue)
TM Lock为了保证对象在修改内容时,对象的结构不会发生改变。
例:
sys@ORCL> drop table scott.dept;
drop table scott.dept
*
ERROR at line 1:
ORA-00054: resource busy and acquire with NOWAIT specified
|
DDL Lock
在DDL操作中会自动为对象加DDL锁(DDL Lock),从而保护这些对象不会被其他会话所修改。
内部锁(闩)
闩(latch)是轻量级的串行化设备,用于协调对共享数据结构、对象和文件的多用户访问。属于Oracle的内部锁。
分享到:
相关推荐
oracle锁表查询oracle锁表查询oracle锁表查询oracle锁表查询
oracle解锁,死锁oracle解锁,死锁oracle解锁,死锁oracle解锁,死锁oracle解锁,死锁oracle解锁,死锁oracle解锁,死锁oracle解锁,死锁oracle解锁,死锁oracle解锁,死锁oracle解锁,死锁
oracle解锁语句,常用解锁语句,经过测试实用;oracle解锁语句,常用解锁语句,经过测试实用。
oracle锁的概念,oracle锁的分类,oracle锁的级别,oracle解锁方法
oracle锁表和解锁语句示例。
处理oracle 锁争用。11111111111111111111
oracle锁的概念,锁的分类及各锁之间的区别
ORACLE解锁方法的一点资料分享。
在Oracle数据库中,DML锁主要包括TM锁和TX锁,其中TM锁称为表级锁(用来保证表的结构不被用户修改),TX锁称为事务锁或行级锁。当Oracle执行DML语句时,系统自动在所要操作的表上申请TM类型的锁。当TM锁获得后,系统...
数据库死锁的概念, 所谓死锁,是指两个会话,每个会话都持有另外一个会话想要的资源,因争夺资源而造成...对于锁死的会话,我们可以直接删掉该会话,等事物回滚完成,也可以找出锁死进程的spid,从服务器中删掉该进程。
oracle 查看锁表sql 及如何解锁,多给点分,为了下载别的资料。大家相互学习相互进步
详细介绍了Oracle中各种锁的机制原理及解锁方法
oracle 解锁表,可以用此字句,对表进行解锁,但是要有相应的权限
Oracle 解锁小软件,希望对大家有用
锁和表分区介绍 Oracle锁分类,表分区分类
1.什么是ORACLE锁 数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性...
oracle锁机制研究
关于oracle锁以及并发的详细描述。