Oracle如何使用锁模式

简介:

Oracle锁概述:

Oracle RDBMS的封锁类型可分为如下三类:

1)内部级封锁

内部级封锁是用于保护 ORACLE内部结构,由系统内部实现,用户不能访问,因此我们不必对

此做过多的了解。

2)DDL级封锁(字典/语法分析封锁)DDL级封锁也是由 ORACLE

RDBMS来控制,它用于

保护数据字典和数据定义改变时的一致性和完整性。它是系统在对 SQL定义语句作语法分析时自

动地加锁,无需用户干予。字典/语法分析封锁共分三类:

(1)字典操作锁:用于对字典操作时,锁住数据字典,此封锁是独占的,从而保护任何一个时

刻仅能对一个字典操作。

(2)字典定义锁:用于防止在进行字典操作时又进行语法分析,这样可以避免在查询字典的同

时改动某个表的结构。

(3)表定义锁:用于一个 SQL语句正当访问某个表时,防止字典中与该表有关的项目被修改。

3)DML级封锁

DML级封锁用于控制并发事务中的数据操纵,保证数据的一致性和完整性,其封锁对象可以是表

或行。对用户的数据操纵,Oracle可以自动为操纵的数据进行封锁,但如果有操纵授权,则为满足

并发操纵的需要另外实施封锁。DML封锁可由一个用户进程以显式的方式加锁,也可通过某些

SQL语句隐含方式实现。

 

Oracle锁模式说明:

0none

1null select

2row-s行共享(rs):行级共享锁;其他对象只能查询这些数据行 select for updatelock for

updatelock row share

3row-x行专用(rx):行级排它锁,用于行的修改,在提交前不允许做 dml操作 insertupdate

deletelock row share

4share共享锁(s):阻止其他 dml操作; create indexlock share

5s/row-x共享行专用(srx):共享行级排它锁;阻止其他事务操作, lock share row exclusive

6exclusive专用(x):排它锁;独立访问使用, alter tabledrop abledrop indextruncate table

lock exclusive

 

数字越大锁级别越高,影响的操作越多。

一般的查询语句如 select … from … ;是小于 2的锁,有时会在 v$locked_object

select … from … for update; 2的锁,当对话使用 for update子串打开一个游标时,所有返回集中

的数据行都将处于行级(Row-X)独占式锁定,其他对象只能查询这些数据行,不能进行 updatedelete

 select…for update操作,insert / update / delete … ; 3的锁。

没有 commit之前插入同样的一条记录会没有反应,因为后一个 3的锁会一直等待上一个 3的锁,

必须释放掉上一个才能继续工作;创建索引的时候也会产生 3,4级别的锁。

locked_mode 2,3,4不影响 DML(insert,delete,update,select)操作, DDL(alter,drop)操作

会提示 ora-00054错误,有主外键约束时 update / delete … ;可能会产生 4,5的锁;DDL语句时是 6

的锁。

 DBA角色,查看当前数据库里锁的情况可以用如下 SQL语句:

select object_id,session_id,locked_mode from v$locked_object;

select t2.username,t2.sid,t2.serial#,t2.logon_time

from vlockedobjectt1,vsession t2

where t1.session_id=t2.sid order by t2.logon_time;

如果有长期出现的一列,可能是没有释放的锁,可以用下面 SQL语句杀掉长期没有释放非正常的

锁:

alter system kill session ‘sid,serial#’;

如果出现了锁的问题,某个 DML操作可能等待很久没有反应,出现这种情况不要用 OS系统命

$kill process_num或者 $kill -9 process_num来终止用用户连接等连接操作,因为一个用户进程

可能产生一以上锁, OS进程并不能彻清除锁的问题.记得在数据库级别用

 

alter system kill session ‘sid,serial#’;杀掉不正常的锁。

直接锁表方法

操作语法:

lock table table_name1 [,table_2, ..., table_n] in lock_mode mode nowait

 

操作模式:

lock table table_name in share mode;

lock table table_name in exclusive mode nowait;

lock table table_name in share update mode;

lock table table_name in row exclusive mode nowait;

lock table table_name in share row exclusive mode;

lock table table_name in row share mode nowait;


目录
相关文章
|
6月前
|
Oracle 安全 关系型数据库
【Oracle】玩转Oracle数据库(六):模式对象管理与安全管理
【Oracle】玩转Oracle数据库(六):模式对象管理与安全管理
80 10
|
Oracle 关系型数据库 流计算
flink cdc 同步oracle idea启动可以全量同步,服务器环境不同步。standalone模式
flink cdc 同步oracle idea启动可以全量同步,服务器环境不同步。standalone模式
|
2月前
|
Ubuntu Oracle 关系型数据库
Oracle VM VirtualBox之Ubuntu 22.04LTS双网卡网络模式配置
这篇文章是关于如何在Oracle VM VirtualBox中配置Ubuntu 22.04LTS虚拟机双网卡网络模式的详细指南,包括VirtualBox网络概述、双网卡网络模式的配置步骤以及Ubuntu系统网络配置。
177 3
|
4月前
|
Oracle 关系型数据库 MySQL
实时计算 Flink版产品使用问题之在online模式下增量抓取Oracle数据时,在archive_log切换时,出现数据丢失的情况,是什么原因
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
5月前
|
运维 DataWorks Oracle
DataWorks产品使用合集之在标准模式下,当同步Oracle的表或视图时,是否需要在源端的测试和生产环境中都存在要同步的表或视图
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
44 3
|
6月前
|
SQL Oracle 关系型数据库
【ORACLE】 事务 | 锁 | 约束 | 权限、角色与用户管理
【ORACLE】 事务 | 锁 | 约束 | 权限、角色与用户管理
69 1
|
6月前
mybatis-plus使用oceanbase-oracle模式
mybatis-plus使用oceanbase-oracle模式
470 2
|
6月前
|
Oracle 关系型数据库 数据库
Oracle示例模式Scott:数据库世界的“小导游”
【4月更文挑战第19天】Oracle的Scott模式是数据库学习的向导,提供操作性的环境,包含表(如EMP和DEPT)、视图和索引。通过它,学习者能掌握基本语法和操作,如创建表、插入数据和编写查询。它是通往Oracle数据库世界的起点,帮助新手奠定基础,开启数据库探索之旅。
|
6月前
|
SQL Oracle 安全
Oracle数据库中的事务和锁
【4月更文挑战第19天】Oracle数据库的事务和锁是确保数据完整性和并发控制的核心机制。事务遵循ACID原则,保证操作的原子性、一致性、隔离性和持久性。通过COMMIT或ROLLBACK来管理事务更改。锁包括共享锁(读)、排他锁(写)、行级锁和表级锁,用于控制并发访问。自动锁机制在DML操作时生效,防止数据冲突。事务和锁共同维护数据库的稳定和安全。
|
6月前
|
存储 Oracle 关系型数据库
Oracle的模式与模式对象:数据库的“城市规划师”
【4月更文挑战第19天】在Oracle数据库中,模式是用户对象的集合,相当于数据库的城市规划,包含表、视图、索引等模式对象。模式对象是数据存储结构,如表用于存储数据,视图提供不同查看角度,索引加速数据定位。良好的模式与模式对象设计关乎数据效率、安全和稳定性。规划时需考虑业务需求、性能、安全和可扩展性,以构建高效数据库环境,支持企业业务发展。