Oracle锁机制

增删改查中查询不需要锁,即使数据被锁定也能在还原信息中查询出锁定之前的值。其余三项均会使用行级锁,直到用户commit或rollbak。

锁是在指定语句的最低可能级别自动获取的 。增删改获取行级锁而不是块级或表级。修改对象(如移动表)会获取对象级锁,而不是方案锁或数据库锁。最大程度提供事务的并发性。

如多个事务需锁定同一资源,则先到的事务获得锁,之后的事务会自动进入排队等待。获得锁的会话可以申请转换锁而不必排到队尾,这样的会话在队列的优先级始终高于一般会话。

可进行手动锁定:

SQL>LOCK TABLE 表名 IN EXCLUSIVE MODE NOWAIT;

NOWAIT选项可无视其他用户的锁将控制权交给你。

DML(增删改)锁:每个DML语句将获得以下两个锁
1.一个或多个正在更改的行的行级锁。
2.一个ROW EXCLUSIVE模式的表锁,此模式锁允许对表进行并发操作,同时保证其他事务不会锁定整个表,并且可以保证DDL语句不会在DML语句修改数据过程中更改数据字典的元数据信息。

锁冲突解决方案:
1.在EM的“Performance(性能)”页上选择“Blocking Sessions (阻塞会话)”查看阻塞的会话ID、SQL语句等信息,找到用户使其发出commit、rollback命令或选中会话点击kill session终止会话。
2.使用SQL
(1)找出阻塞会话的SID、SERIAL#

SQL> select SID, SERIAL#, USERNAME 
from V$SESSION 
where SID in 
    (select BLOCKING_SESSION 
    from V$SESSION);

(2)杀掉阻塞的会话

SQL>ALTER SYSTEM KILL SESSION 'SID,SERIAL#' IMMEDIATE;

被杀掉的会话会进行rollback并断开连接。

Oracle会自动检测死锁并终止一个语句。

posted @   epiphanyy  阅读(48)  评论(0编辑  收藏  举报  
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示