达梦8最终锁阻塞巡检 SQL

SELECT CASE WHEN l.blocked='1' THEN 'WAITER' ELSE 'HOLDER' END AS role,

s.sess_id,

l.trx_id,

l.lmode,

NVL(o.object_name,'-') AS object_name,

SUBSTR(s.sql_text,1,60) AS sql60

FROM (

SELECT *

FROM v$lock

WHERE TRIM(TRANSLATE(blocked,'01',' ')) IS NULL -- 仅 0 或 1

AND TRIM(TRANSLATE(table_id ,'0123456789',' ')) IS NULL

) l

LEFT JOIN dba_objects o

ON TRIM(l.table_id) = TO_CHAR(o.object_id)

JOIN v$sessions s

ON s.trx_id = l.trx_id

WHERE l.blocked='1' OR l.lmode >= 5

ORDER BY l.trx_id, l.blocked;

好,既然这段 SQL 已经能跑通,就把"最终可用版"整理成一行,方便你直接贴进代码------列类型映射也一起给你


  1. 最终锁阻塞巡检 SQL(单行可复制)

sql

复制

复制代码
SELECT CASE WHEN l.blocked='1' THEN 'WAITER' ELSE 'HOLDER' END AS role, s.sess_id, l.trx_id, l.lmode, NVL(o.object_name,'-') AS object_name, SUBSTR(s.sql_text,1,60) AS sql60 FROM (SELECT * FROM v$lock WHERE TRIM(TRANSLATE(blocked,'01','  ')) IS NULL AND TRIM(TRANSLATE(table_id,'0123456789',' ')) IS NULL) l LEFT JOIN dba_objects o ON TRIM(l.table_id)=TO_CHAR(o.object_id) JOIN v$sessions s ON s.trx_id=l.trx_id WHERE l.blocked='1' OR l.lmode>=5 ORDER BY l.trx_id,l.blocked;

  1. 列类型与中文含义(对应结果集)

表格

复制

列名 达梦数据类型 中文说明
role VARCHAR(6) 角色:HOLDER=持锁者,WAITER=等待者
sess_id BIGINT 会话 ID,可关联 V$SESSIONS 杀会话
trx_id BIGINT 事务 ID,同一事务内多把锁共享
lmode CHAR(2) 锁模式:4=S,5=SRX,6=X(>=5 即高粒度)
object_name VARCHAR(512) 被锁对象名(表/索引/分区)
sql60 VARCHAR(240) 当前 SQL 前 60 字节,快速定位业务语句

  1. 使用小贴士
  • 结果为空 → 当前没有高粒度锁或阻塞,系统健康。

  • 出现 WAITER → 同一 trx_id 下找 HOLDER,对比 lmode 即可判断是否需要 kill 会话。

  • 想杀锁:CALL SP_CLOSE_SESSION(sess_id);(需 SYSDBA)

相关推荐
GBASE15 小时前
G术时刻 |GBase 8s数据库事务并发控制之封锁技术介绍(下)
数据库
xiezhr1 天前
逛GitHub发现了一款免费的带AI功能的数据库管理工具
数据库·ai编程·dba
吃糖的小孩2 天前
给 QQ AI 机器人设计“可控记忆”:会话摘要、手动长期记忆与角色卡边界
数据库
笃行3503 天前
金仓数据库数据安全双防线:静态存储加密与传输加密实战
数据库
笃行3503 天前
金仓数据库物理备份实战:sys_rman 全流程演练与误覆盖抢救
数据库
笃行3503 天前
金仓数据库逻辑备份实战:从全库导出到 Schema 替换的完整闭环
数据库
SelectDB4 天前
阶跃星辰基于 SelectDB 构建 PB 级 Agent 可观测平台
大数据·数据库·aigc
这个DBA有点耶4 天前
GROUP BY优化全解:如何写出既不丢数据又飞快的分组查询
数据库·mysql·架构
掉头发的王富贵4 天前
【StarRocks】极限十分钟入门StarRocks
数据库·sql·mysql