`

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数据库中的锁机制。 1. **共享锁(S)**:允许多个用户读取行,但不允许修改。 2. **排他锁(X)**:允许单个用户修改行,其他用户只能等待。 3. **共享更新锁...

    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锁表和解锁语句示例.sql

    oracle锁表和解锁语句示例。

    oracle锁机制探讨

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

    Oracle锁 图例

    本文将深入探讨Oracle锁的类型、工作原理以及相关的管理工具。 一、Oracle锁的类型 1. 表级锁:Oracle中的表级锁主要有两种,即排他锁(Exclusive Locks, X locks)和共享锁(Shared Locks, S locks)。排他锁允许...

    查看Oracle锁表

    ### 查看Oracle锁表 在Oracle数据库管理过程中,锁定机制是一项重要的功能,它用于确保数据的一致性和事务处理的安全性。当多个用户试图同时访问同一数据时,可能会出现并发问题,这时就需要通过锁定来控制对数据的...

    oracle锁表及解锁

    ### Oracle锁表与解锁详解 在Oracle数据库管理中,锁是一种关键机制,用于控制多个用户对数据资源的并发访问,防止数据冲突和不一致。本文将深入探讨Oracle中检查锁表的方法以及如何对表进行解锁。 #### Oracle锁...

    oracle锁表后,如何解锁

    Oracle锁表后如何解锁 Oracle锁表是指在Oracle数据库中某个表被锁定,无法进行操作的情况。这种情况经常发生在多用户同时访问同一个表时,某个用户锁定了该表,导致其他用户无法访问该表。那么,在不知道谁锁的情况...

    快速查找oracle锁对象

    在Oracle数据库管理中,"快速查找Oracle锁对象"是一个关键任务,特别是在处理并发事务和解决性能问题时。当多个用户或进程同时访问同一资源时,可能会出现锁冲突,导致某些事务等待,影响数据库的正常运行。了解如何...

    oracle锁表解决

    ### Oracle锁表解决 在Oracle数据库管理中,锁表是一个常见的问题,特别是在高并发的应用场景下。当一个表被锁定时,其他用户或进程可能无法访问该表,从而导致应用程序出现延迟或者错误。因此,了解如何有效地解锁...

    oracle锁表sql

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

    ORACLE锁深入分析

    Oracle锁是数据库并发控制的关键机制,它确保了在多用户环境下数据的一致性和完整性。当多个用户并发地访问和操作数据库中的数据时,如果没有适当的控制,可能会导致数据的不一致性和冲突。为了解决这个问题,Oracle...

    oracle 解锁表

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

Global site tag (gtag.js) - Google Analytics