`
kingj
  • 浏览: 426307 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

oracle锁类型

 
阅读更多
为了防止用户在同一时间并发地访问和修改资源,ORACLE使用不同类型的锁控制对数据的并发访问,以防止用户之间出现破坏性的交互操作
,oracle 为处理事务自动锁定资源。

锁在SQL语句开始它们与数据的相互作用时获得,并在事务的整个过程中有效

oracle9i使用两种锁模式:
.独占模式(排他):不允许其他任何并发会话以任何方式共享锁定的资源,修改数据时需要这种锁。
.共享模式:允许对同一块数据的并发读访问。在更改数据时,上升为独占模式



一)行级锁
insert update delete 隐式加行锁(排他)
select ... for update 显示加行锁(共享)

select ...for update 用于显示锁定将要更新的数据行,防止其他用户在更新之前操作此行
如:select  from emp where deptno=30 for update
update emp set ename='Joke' where empno=7499;

在锁释放之前,其他用户不可以对锁定的数据行进行(修改,删除)操作,查询可以

假如有其他用户要锁定同一资源:可以使用wait 子句对锁的等待时间控制
如: 在另一用户中:select  from emp where deptno=30 for update wait 2 (等待2秒
如2秒钟还未释放资源,系统将会给出提示信息



二)表级锁

共享模式(in share mode)
共享更新模式(in share update mode)
排他锁模式

锁定表的通用语法:

lock table 表名 in share or share update or exclusive mode;

1) 共享模式
不允许其他用户插入,更新和删除行,多个用户可以同时在同一表上设置共享锁,这样设置锁的多个用户都只能执行查询

lock table emp in share mode;

2)共享更新模式(in share update mode)
允许多个用户同时锁定表的不同行, 允许其他用户进行DML(insert update delete select)操作 , 除了已锁定的行

如: lock table emp in share update mode;
select  from emp where deptno=30 for update 锁定的行
其他用户不能delete ,update 部门30的雇员信息

其他用户可以查看锁定的行 select  from emp where deptno=30

3)排他锁模式(限制性强)
不允许其他用户插入,更新和删除行, 允许查看数据,但只有一个用户可以在表中放置排他锁

lock table emp in exclusive mode;

三) 死锁

如:USERA lock table scott.emp in share mode;
USERB lock table scott.emp in share mode ;

USERA update scott.emp set ename='Smith' where empno=7369;
USERB update scott.emp set job='CLERK' where empno=7521;
发生死锁


你看看这个。
分享到:
评论

相关推荐

    Oracle数据库的锁类型

    ### Oracle数据库的锁类型详解 #### 一、引言 Oracle数据库作为企业级数据库解决方案的佼佼者,其锁机制是保障数据完整性和并发控制的关键技术之一。在Oracle数据库中,锁的使用是为了协调多个用户对同一数据资源...

    oracle锁表及解锁

    #### Oracle锁类型 Oracle中的锁主要有两种类型:表级锁(Table Locks)和行级锁(Row Locks),分别由`TM`和`TX`标识。表级锁通常用于DML操作或DDL操作,而行级锁则是在执行更新、插入或删除等操作时自动产生的。 ...

    Oracle锁表问题的简捷处理技巧

    #### Oracle锁类型及含义 Oracle提供了多种类型的锁来满足不同场景的需求: 1. **None (0)**:不施加任何锁。 2. **Null (1)**:通常表示未定义的状态。 3. **Row-S (RS) Subshare (2)**:行共享锁,允许同一行的...

    Oracle的锁表与解锁

    锁可以分为行级锁(Row Level Lock)和表级锁(Table Level Lock),以及更细粒度的锁类型。本文将深入探讨Oracle中的锁机制,特别是如何锁表与解锁,以及相关的SQL查询语句,帮助数据库管理员和开发人员更好地理解...

    oracle锁机制探讨

    当Oracle执行DML语句时,系统自动在所要操作的表上申请TM类型的锁。当TM锁获得后,系统再自动申请TX类型的锁,并将实际锁定的数据行的锁标志位进行置位。这样在事务加锁前检查TX锁相容性时就不用再逐行检查锁标志,...

    相克军 ORACLE 讲座 深度剖析 锁 笔记

    本篇笔记主要围绕相克军老师的ORACLE锁讲座内容展开,详细介绍了Oracle中的锁类型、行级锁与表级锁的使用,以及锁的兼容性和相关视图。 1. **ORACLE 锁类型** - **Latch 锁**:Latch 是一种轻量级锁,用于保护...

    oracle 锁的概念

    ### Oracle锁的概念与分类 #### 一、锁的基本概念 在Oracle数据库中,锁是一种用于管理并发事务的重要机制。通过锁机制,Oracle能够确保多用户环境下的数据一致性和完整性。简单来说,锁是为了防止多个用户同时...

    oracle锁表处理

    ### Oracle锁表处理 在Oracle数据库管理中,锁机制是一种重要的资源管理手段,用于控制并发事务对数据资源的访问,防止多个用户同时修改相同的数据,从而确保数据的一致性和完整性。然而,在高并发环境下,锁的争用...

    Oracle 锁机制问题详解

    Oracle 支持多种类型的锁,包括共享锁(Share Locks)和排他锁(Exclusive Locks),这些锁有助于实现最大可能的并发级别。 #### 四、共享锁与排他锁 Oracle 数据库中的锁定标准级别保证了最大可能的并发级别。例如...

    oracle存储过程解锁

    锁定记录中通常包含锁定类型、锁定对象名以及执行锁定的会话ID等信息,这些信息对于后续的解锁操作至关重要。 接下来,一旦确定了锁定存储过程的会话ID,可以进一步查询`v$session`视图来获取与该会话ID相关的更多...

    Oracle锁 图例

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

    查看Oracle锁表

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

    Oracle锁和表分区

    - **分区类型**:Oracle支持多种分区方式,如范围分区(基于列值的范围)、散列分区(基于散列函数)、列表分区(基于列值的列表)和复合分区(组合上述方式)。通过分区,可以将大表的操作分散到各个小的分区上,...

    快速查找oracle锁对象

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

    Oracle的锁机制

    Oracle提供了多种类型的锁来满足这些需求。 首先,按照是否独占,锁分为排它锁(X锁)和共享锁(S锁)。排它锁允许一个事务独占数据,防止其他事务读取或修改,而共享锁则允许多个事务同时读取数据,但不允许写入或...

    Oracle 死锁处理

    5. **Oracle锁类型** - 用户锁和系统锁:根据用户与系统的不同,Oracle的锁分为用户锁(如行级锁、表级锁)和系统锁(如系统资源锁)。 - 行级锁:锁定单个数据行,允许其他事务同时访问表的其他行。 - 表级锁:...

    ORACLE锁深入分析

    总之,Oracle锁机制是其并发控制的核心,通过精细的锁类型和模式,Oracle能够在保证数据一致性的同时,支持多个并发事务高效地访问数据库资源。了解并掌握Oracle锁的原理和应用,对于优化数据库性能和解决并发问题至...

    oracle数据库锁使用

    Oracle 数据库锁是确保数据完整性、一致性以及并发操作的关键机制。在Oracle中,锁主要分为两类:数据锁(DML...在设计事务和处理并发操作时,应根据业务需求选择合适的锁类型,并注意锁的兼容性和可能引发的并发问题。

Global site tag (gtag.js) - Google Analytics