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会自动检测死锁并终止一个语句。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 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)