`

ORACLE锁

阅读更多

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指无其他事务请求,用有此锁,RBSSLOTSEQ值与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的内部锁。

 

0
0
分享到:
评论
1 楼 yinxiaoyong 2010-07-14  
Thanks

相关推荐

    oracle锁表查询oracle锁表查询oracle锁表查询

    oracle锁表查询oracle锁表查询oracle锁表查询oracle锁表查询

    oracle解锁,死锁

    oracle解锁,死锁oracle解锁,死锁oracle解锁,死锁oracle解锁,死锁oracle解锁,死锁oracle解锁,死锁oracle解锁,死锁oracle解锁,死锁oracle解锁,死锁oracle解锁,死锁oracle解锁,死锁

    oracle解锁语句.txt

    oracle解锁语句,常用解锁语句,经过测试实用;oracle解锁语句,常用解锁语句,经过测试实用。

    oracle锁的概念

    oracle锁的概念,oracle锁的分类,oracle锁的级别,oracle解锁方法

    oracle锁表和解锁语句示例.sql

    oracle锁表和解锁语句示例。

    oracle锁表处理

    处理oracle 锁争用。11111111111111111111

    oracle 锁的概念

    oracle锁的概念,锁的分类及各锁之间的区别

    ORACLE解锁方法的一点资料

    ORACLE解锁方法的一点资料分享。

    oracle锁机制探讨

    在Oracle数据库中,DML锁主要包括TM锁和TX锁,其中TM锁称为表级锁(用来保证表的结构不被用户修改),TX锁称为事务锁或行级锁。当Oracle执行DML语句时,系统自动在所要操作的表上申请TM类型的锁。当TM锁获得后,系统...

    Oracle锁表处理,Oracle表解锁

    数据库死锁的概念, 所谓死锁,是指两个会话,每个会话都持有另外一个会话想要的资源,因争夺资源而造成...对于锁死的会话,我们可以直接删掉该会话,等事物回滚完成,也可以找出锁死进程的spid,从服务器中删掉该进程。

    oracle锁表sql

    oracle 查看锁表sql 及如何解锁,多给点分,为了下载别的资料。大家相互学习相互进步

    Oracle 锁机制问题详解

    详细介绍了Oracle中各种锁的机制原理及解锁方法

    oracle 解锁表

    oracle 解锁表,可以用此字句,对表进行解锁,但是要有相应的权限

    oracle解锁软件

    Oracle 解锁小软件,希望对大家有用

    Oracle锁和表分区

    锁和表分区介绍 Oracle锁分类,表分区分类

    ORACLE锁深入分析

    1.什么是ORACLE锁 数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性...

    oracle锁机制研究

    oracle锁机制研究

    oracle锁机制

    关于oracle锁以及并发的详细描述。

Global site tag (gtag.js) - Google Analytics