Oracle中的锁定可以分为几类:DML lock(data lock),DDL lock(dictionary lock)和internal lock/latch。
DML lock又可以分为row lock和table lock。row lock在select.. for update/insert/update/delete时隐式自动产生,而table lock除了隐式产生,也可以调用lock table
<table_name>
in
</table_name>
name来显示锁定。
如果不希望别的session lock/insert/update/delete表中任意一行,只允许查询,可以用lock table table_name in exclusive mode。(X)这个锁定模式级别最高,并发度最小。
如果允许别的session查询或用select for update锁定记录,不允许insert/update/delete,可以用lock table table_name in share row exclusive mode。(SRX)
如 果允许别的session查询或select for update以及lock table table_name in share mode,只是不允许insert/update/delete,可以用lock table table_name in share mode。(share mode和share row exclusive mode的区别在于一个是非抢占式的而另一个是抢占式的。进入share row exclusive mode后其他session不能阻止你insert/update/delete,而进入share mode后其他session也同样可以进入share mode,进而阻止你对表的修改。(S)
还有两种锁定模式,row share(RS)和row exclusive(RX)。他们允许的并发操作更多,一般直接用DML语句自动获得,而不用lock语句。
详细参考concepts文档中的"Type Of Locks":
http://download-uk.oracle.com/docs/cd/B10501_01/server.920/a96524/c21cnsis.htm#2937
分享到:
相关推荐
- 在Oracle中,`LOCK TABLE`用于在会话级别锁定表,阻止其他会话对指定表的DML操作。这在处理高并发时特别有用,确保在执行敏感操作(如批量更新或删除)时数据的一致性。 - 使用`UNLOCK TABLE`语句可以解除对表的...
在Oracle数据库系统中,"lock table" 是一个重要的管理功能,用于控制多个用户对特定表的并发访问。当一个用户对表执行修改操作(如INSERT、UPDATE或DELETE)时,Oracle会自动对表施加锁,以防止其他用户在同一时间...
### Oracle Lock 概念与类型详解 #### 一、引言 在数据库管理系统(DBMS)中,锁是一种机制,用于管理多个用户同时访问共享资源(如数据库中的表或行)时可能产生的冲突。Oracle数据库中提供了多种类型的锁来确保数据...
4. **DML语句**:INSERT、UPDATE、DELETE和LOCK TABLE是PL/SQL中的数据操纵语言。在PL/SQL块中,可以直接使用这些语句,并结合变量来处理数据。例如,以下过程使用游标处理员工解雇: ```sql CREATE OR REPLACE ...
根据提供的文件信息,本文将详细解释Oracle数据库中的常用命令及相关知识点。这些命令涵盖了数据库操作的基础层面,对于初学者和日常使用者来说非常实用。 ### 1. 设置显示参数 - **`set linesize 100;`**:设置每...
在 Oracle 数据库中,“Library Cache Lock”是一种常见的等待事件,通常出现在以下两种情况: 1. **当会话尝试执行 DDL 操作时:** - 当会话1(session 1)正在对某个表执行 DML 或者 DDL 操作时,同时存在另一个...
Oracle中的锁主要有以下几种模式: - **0:None** —— 没有任何锁。 - **1:Null** —— 空锁,表示没有任何锁的状态。 - **2:Row-S (RS)** —— 行共享锁,允许其他用户读取锁定的数据行,但不能进行写操作。 - ...
### 对Oracle锁几种模式的理解 #### 一、Oracle锁模式概述 在Oracle数据库中,为了保证数据的一致性和完整性,引入了多种类型的锁机制。这些锁机制能够有效地控制并发操作,防止不同用户或进程间的相互干扰。...
本文将深入探讨如何在分布式事务中实现基于Oracle PL/SQL的UL (User-Level) LOCK的悲观离线锁策略。这种策略主要用于防止多个并发操作对同一数据进行修改,从而避免数据不一致性和死锁等问题。 首先,理解悲观锁的...
- **重置默认锁状态**:使用FOR UPDATE OF和LOCK TABLE语句来控制锁定行为。 - **FETCH中应用COMMIT语句**:在FETCH操作中使用COMMIT来保证数据的一致性。 - **分布式事务处理**:在多个数据库之间协调事务的完成或...
### Oracle数据库学习知识点详解 #### 一、基本使用 ##### 1.1 常用命令 **1.1.1 Connect/Disconnect数据库连接命令** - **用途:** 连接或断开与Oracle数据库的连接。 - **语法示例:** - `sqlplus username/...
Oracle SQL是用于管理和操作Oracle数据库的关键工具,涵盖了数据查询、数据操纵、数据定义以及数据控制等多个方面。在本文中,我们将深入探讨Oracle SQL中的数据控制语句(DCL)、数据定义语句(DDL)以及一些基本的...
- 动态采样是Oracle的一种技术,用于收集额外的统计信息来改善执行计划的选择。 - 本书解释了如何识别使用了动态采样的SQL语句,并提供了解决方案。 - 实例: - 使用`DBMS_XPLAN.DISPLAY_CURSOR`显示执行计划,...
在Oracle中,主要有两种类型的锁:行级锁(Row-Level Locks)和表级锁(Table-Level Locks)。行级锁允许并发用户同时访问不同的数据行,提高了系统的并行性;而表级锁则在整个表上施加锁定,适用于需要全局锁定的...
- **V$LOCK视图**:提供了关于锁定对象的信息,包括锁定模式、请求者等。通过结合V$LOCK和V$TRANSACTION视图,可以深入分析锁冲突和死锁的原因。 ### 数据加载与并行处理 在Oracle数据库中,数据的高效加载对于大...
- `LOCK TABLE`:用于锁定表。 - `SET CONSTRAINTS`:用于设置约束的状态。 - `SET TRANSACTION`:用于设置事务的工作方式。 5. **审计控制语言**:用于控制和审计用户的活动。 - `AUDIT`:用于开启审计功能。 ...
oracle锁机制可以分为六种模式:none、null、Row-S、Row-X、Share、exclusive。其中,Row-S模式为共享表锁,sub share,Row-X模式为行独占锁,sub exclusive,Share模式为共享锁,阻止其他DML操作,S/Row-X模式为...
5. 共享行排他锁(Share Row Exclusive Table Lock,SRX) 共享行排他锁是一种介于行级共享锁和行级排他锁之间的锁,它允许其他事务添加行级共享锁,但不允许添加行级排他锁。拥有 SRX 锁的事务可以执行更新操作,但...
- 此选项是一个快捷组合,相当于同时设置了`--add-drop-table --add-locking --create-option --disable-keys --extended-insert --lock-tables --quick --set-charset`。该选项使`mysqldump`能够快速导出数据,并...