当前位置: 首页 > news >正文

Oracle 的V$LOCK 视图详解

Oracle 的V$LOCK 视图详解

V$LOCK 是 Oracle 数据库中最重要的动态性能视图之一,用于显示当前数据库中锁的持有和等待情况。

一、V$LOCK 视图结构

列名数据类型描述
SIDNUMBER持有或等待锁的会话标识符
TYPEVARCHAR2(2)锁类型标识符
ID1NUMBER锁标识符1(含义取决于锁类型)
ID2NUMBER锁标识符2(含义取决于锁类型)
LMODENUMBER锁模式(当前持有的模式)
REQUESTNUMBER请求的锁模式
CTIMENUMBER锁已持有或等待的时间(秒)
BLOCKNUMBER是否阻塞其他会话(1=阻塞,0=不阻塞)

二、主要锁类型(TYPE字段)

1. 基本锁类型

类型描述
TX事务锁(行级锁)
TMDML锁(表级锁)
UL用户自定义锁(DBMS_LOCK创建)

2. 系统级锁类型

类型描述
ST空间事务锁
TT临时表锁
SQ序列锁
CF控制文件锁

三、锁模式(LMODE/REQUEST)

Oracle 锁模式数值定义:

锁模式描述
0None无锁
1Null (N)空模式
2Row-S (SS)行共享
3Row-X (SX)行排他
4Share (S)共享
5S/Row-X (SSX)共享行排他
6Exclusive (X)排他

四、ID1 和 ID2 的含义

1. TX 锁(事务锁)

  • ID1:Undo 段号 + 事务槽号(USN.SLT)
  • ID2:事务序列号(WRAP)

2. TM 锁(表锁)

  • ID1:被锁定对象的 OBJECT_ID
  • ID2:通常为 0

3. UL 锁(用户锁)

  • ID1:DBMS_LOCK.ALLOCATE_UNIQUE 分配的锁ID
  • ID2:通常为 0

五、实用查询示例

1. 查看所有锁信息

SELECT * FROM v$lock ORDER BY ctime DESC;

2. 查找阻塞会话

SELECT l1.sid AS "阻塞会话ID",s1.username AS "阻塞用户",s1.osuser AS "阻塞OS用户",s1.machine AS "阻塞机器",l2.sid AS "被阻塞会话ID",s2.username AS "被阻塞用户",l1.type AS "锁类型",DECODE(l1.type,'TX', '事务锁','TM', '表锁','UL', '用户锁',l1.type) AS "锁描述",l1.ctime AS "持有时间(秒)"
FROM v$lock l1, v$lock l2, v$session s1, v$session s2
WHERE l1.block = 1 
AND l2.request > 0
AND l1.id1 = l2.id1
AND l1.id2 = l2.id2
AND l1.sid = s1.sid
AND l2.sid = s2.sid;

3. 查询特定对象的锁

SELECT l.sid, s.username, s.status, l.type, l.lmode, l.ctime, o.object_name
FROM v$lock l, dba_objects o, v$session s
WHERE l.id1 = o.object_id(+)
AND l.type = 'TM'
AND l.sid = s.sid
AND o.object_name = 'EMPLOYEES';

六、锁诊断与问题解决

1. 常见锁问题

  • TX锁等待:最常见的事务冲突
  • TM锁冲突:DDL与DML操作冲突
  • 死锁:ORA-00060错误

2. 解锁方法

-- 1. 查找阻塞会话
SELECT sid, serial#, username FROM v$session 
WHERE sid IN (SELECT blocking_session FROM v$session WHERE blocking_session IS NOT NULL);-- 2. 终止会话
ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;

V$LOCK 视图是诊断 Oracle 锁问题的关键工具,结合 V$SESSION 和 V$LOCKED_OBJECT 等视图可以全面分析锁情况。

相关文章:

  • nginx安全防护与https部署实战
  • GaussDB资源冻结与解冻:精细化资源管理的实践与策略
  • 《软件工程》第 7 章 - 软件体系结构设计
  • Android开机向导定制(1)开机向导加载流程
  • 《软件工程》第 15 章 - 软件度量与估算:从概念到实践​
  • opencvsharp usb摄像头录像 c# H264编码
  • Python 网络编程入门
  • MMA: Multi-Modal Adapter for Vision-Language Models论文解读
  • macOS烧录stm32程序初步成功
  • 海思3519V200 上基于 Qt 的 OpenCV 和 MySql 配置开发
  • Simple Factory(简单工厂)
  • 《软件工程》第 14 章 - 持续集成
  • C++——STL——unordered_map与unordered_set的使用以及使用哈希表封装unordered_map/set
  • DIY 自己的 MCP 服务-核心概念、基本协议、一个例子(Python)
  • ChatGPT 如何工作——提示工程、对话记忆与上下文管理解析
  • 最新Spring Security实战教程(十六)微服务间安全通信 - JWT令牌传递与校验机制
  • 从“无我”到“无生法忍”:解构执着的终极智慧
  • Godot的RichTextLabel富文本标签,鼠标拖拽滚动,方向键滚动,底部吸附,自动滚动
  • 时序模型上——ARIMA/MA/AR
  • OpenCV图像认知(二)
  • 电子商务网站建设资讯/上海app开发公司
  • 手机兼职平台网站开发/网络营销到底是干嘛的
  • 性价比最高网站建设电话/关键词挖掘工具免费
  • 建筑工程网格化监管/厦门关键词优化平台
  • 中学生制作网站怎么做/谷歌浏览器 免费下载
  • 网站名字怎样做版权/百度快速排名平台