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

达梦用简单的SQL查找阻塞语句

模拟阻塞的产生

创建个表

CREATE TABLE "SYSDBA"."test"("c1" CHAR(10));

另外打开四个窗口,每个分别执行,都不要提交

窗口1:

update "test" set "c1"=1; --会话1

为了模拟生产的混合会话,窗口一再执行

select * from "SYSDBA"."test";

 

窗口2

update "test" set "c1"=4; --会话2

窗口3

update "test" set "c1"=6; --会话3

窗口4:

select * from v$trxwait;

image

会看到会话174747被174728阻塞了,174748又被174747阻塞了,就是会话1阻塞了会话2,会话2阻塞了会话3

 

执行

select sf_get_session_sql(sess_id),* from gv$sessions where trx_id=174728; 
select sf_get_session_sql(sess_id),* from gv$sessions where trx_id=174747;

174728是这个select * from "SYSDBA"."test";

174747是update "test" set "c1"=4;

image

image

 

因为会话一是混合事务,所以看到的是被select阻塞了,实际是被update "test" set "c1"=1; 阻塞了

查找发现174728发现是混合事务

select * from v$lock where trx_id=174728;

image

如果需要更详细的SQL,需要查询V$SQL_HISTORY ,v$sessions 视图查询,可以看到是前面一个update没提交导致了阻塞,

--查询混合事务包含的SQL

select listagg2(top_sql_text||char(10))
 from  V$SQL_HISTORY sh,v$sessions block_sess
 where sh.TRX_ID=block_sess.trx_id and sh.sess_id=block_sess.sess_id
 and sh.TRX_ID=174728;

image

看到是被混合事务中的update "test" set "c1"=1;阻塞了

 

注意:由于V$SQL_HISTORY只能保留10000条历史记录, 如存在长时间未提交事务或者系统业务负载高,可能查不到结果或者结果不全
 
也可以从慢SQL抓取的日志中获取
cat dmsql_DMSERVER_20230110_145721.log | grep “trxid:69667”

image

 

 处理方案:

杀掉导致阻塞的会话就可以了

select * from v$sessions where SQL_TEXT like '%test%' AND STATE='IDLE';

 sp_close_session(158834760);

image

如果不知道杀哪个,把IDLE的会话杀完也可以

begin
for rec in
(
select * from v$sessions where STATE='IDLE'
)
loop
sp_close_session(rec.sess_id);
end loop;
end;

 

最后发现窗口2也执行成功了

image

窗口3还在执行中,被窗口2的会话阻塞了

image

 

 

达梦DML语句是默认不提交的,需要自己手动提交

如果需要自动提交,需要设置下

image

 

 

 

 

 

 

 

 

http://www.jsqmd.com/news/538382/

相关文章:

  • 告别手动调整!用GMS的‘Coverage Setup’与‘Activate Cells’智能裁剪三维地下水模型网格
  • 微信聊天记录备份技术解析:如何安全保存你的数字记忆
  • 如何在Chrome浏览器中优化Ruffle扩展:Flash内容重生的实用指南
  • 2026年 电抗器厂家实力推荐榜:高压/低压/串联/干式/滤波/变频器专用/铁芯/空心/限流/启动电抗器,源头工厂技术解析与选购指南 - 品牌企业推荐师(官方)
  • Ocam vs OBS:轻量级录屏工具如何选?实测对比两者的性能与适用场景
  • 新手避坑指南:在Ubuntu 20.04上从驱动到地图,一步步跑通AWSIM+Autoware仿真
  • 别再手动敲代码了!用通义千问+PHPStudy,30分钟搞定一个带数据库的登录注册系统
  • LFM2.5-1.2B-Thinking-GGUF开源大模型:低成本GPU算力高效利用实践指南
  • 突破显存瓶颈:多语言文本嵌入模型量化优化实战指南
  • Java 新纪元 — JDK 25 + Spring Boot 4 全栈实战(十七):Boot 3 → Boot 4 迁移避坑指南——那些文档不会告诉你的迁移血泪史
  • fastreport 数字转大写
  • 如何通过tiny11builder创建精简高效的Windows 11系统镜像?
  • 2026年四川化粪池清理/河道清理厂家甄选 高效清淤作业 适配各类工程 - 深度智识库
  • 基于RAG架构的智能客服系统实战:从零搭建到性能优化
  • 你的舵机抖得厉害?可能是PWM信号配置错了!STM32定时器避坑指南(实测MG996R)
  • Java 新纪元 — JDK 25 + Spring Boot 4 全栈实战(十八):云原生部署——Docker + K8s + GraalVM Native Image,让Java真正飞在云端
  • Zephtr编译环境搭建(Debian 12)
  • 2026年全屋家具定制品牌口碑分析,江浙沪优质的全屋家具定制分析综合实力与口碑权威评选 - 品牌推荐师
  • 用Arduino玩转GPIO中断:按键消抖+过零检测的5个实战技巧
  • 北京回收小人书连环画上门,零散小件嫌麻烦?上门再小也收 - 品牌排行榜单
  • ViGEmBus虚拟游戏控制器驱动:让所有手柄在Windows上畅玩游戏的终极解决方案
  • 2026年抽动症哪个机构治疗的好?专业康复机构参考 - 品牌排行榜
  • PCL点云处理实战:5分钟搞定KD-tree近邻搜索(附完整代码)
  • 毕业设计系统类的实战开发:从需求建模到高可用部署
  • .NET Core Web API设置响应输出的Json数据格式的两种方式
  • RT-Thread硬件定时器HWTIMER实战:在STM32F1上实现5秒精准周期任务(附完整代码)
  • 阿里云服务器怎么选?手把手教你选对配置 - 怪
  • DMA数据搬运避坑指南:STM32标准库配置常见问题与解决方案
  • 小型企业WIFI配置方案,附华为企业 WiFi 完整配置案例!
  • LFM2.5-1.2B-Thinking-GGUF商业场景:电商商品文案生成+多轮思考优化实操