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

Oracle 数据库查看当前正在造成阻塞的 SQL 语句

🎯 方法一:快速定位阻塞源 (最常用)

这是最直接、最高效的方法,通过 VSESSION 视图中的 BLOCKING_SESSION 字段,可以迅速找到阻塞的根源。

1. 找到阻塞者和被阻塞者
运行以下 SQL,它会列出所有正在阻塞他人的会话及其对应的被阻塞会话。重点关注 BLOCKER 相关的列。
SELECT
blocker.sid AS blocker_sid,
blocker.serial# AS blocker_serial,
blocker.username AS blocker_user,
blocker.sql_id AS blocker_sql_id,
waiter.sid AS waiter_sid,
waiter.sql_id AS waiter_sql_id
FROM vsession blocker
JOIN vsession waiter ON blocker.sid = waiter.blocking_session
WHERE waiter.blocking_session IS NOT NULL;

2. 查看阻塞者的 SQL 语句
从上一步的结果中,获取阻塞者的 SQL_ID (即 blocker_sql_id),然后查询 VSQL 视图来获取完整的 SQL 文本。
-- 将 'YOUR_BLOCKER_SQL_ID' 替换为上一步查到的 SQL_ID
SELECT sql_text
FROM vsql
WHERE sql_id = 'YOUR_BLOCKER_SQL_ID';

提示:如果 blocker_sql_id 为空,可以尝试查询 VSESSION 中的 PREV_SQL_ID 字段,它代表了会话上一次执行的 SQL。

🔗 方法二:分析复杂阻塞链

当一个会话被另一个会话阻塞,而后者又被第三个会话阻塞时,就形成了阻塞链。此时需要找到链的源头。

* 使用递归查询追溯根源
以下 SQL 使用 CONNECT BY 语法,可以清晰地展示阻塞的层级关系,帮助你找到最顶层的“罪魁祸首”。
SELECT
sid,
serial#,
username,
blocking_session,
level AS blocking_level,
SYS_CONNECT_BY_PATH(sid, ' -> ') AS blocking_path
FROM vsession
WHERE blocking_session IS NOT NULL
CONNECT BY PRIOR sid = blocking_session
START WITH sid IN (
SELECT blocking_session
FROM vsession
WHERE blocking_session IS NOT NULL
);

执行结果中,blocking_level 值最小的行通常就是阻塞链的源头。找到其 SID 后,再按方法一的步骤2查询其 SQL 即可。

🚨 方法三:使用高级诊断工具 (适用于严重故障)

当系统出现严重的性能问题或大面积会话挂起(Hang)时,可以使用 Oracle 提供的 VHANG_INFO 视图进行深度诊断。

1. 触发 Hang 分析
首先,需要以 SYSDBA 身份执行以下命令来生成分析数据。
-- 需要 SYSDBA 权限
ORADEBUG hanganalyze 3;

2. 查询阻塞信息
执行完上一步后,立即查询 VHANG_INFO 视图。它的 BLOCKING_TREE 列会以树形结构直观地展示阻塞关系。
SELECT blocking_tree, blocked_session, blocking_session, wait_event, sql_id
FROM vhang_info
ORDER BY blocking_tree;

同样,找到顶级的阻塞会话及其 SQL_ID,然后去 VSQL 视图中查询具体语句。

📊

为了方便你理解和记忆,以下是排查阻塞问题时最关键的几个动态性能视图:
视图名称 主要用途
VSESSION 核心视图,包含所有会话的详细信息,BLOCKING_SESSION 字段是定位阻塞的关键。
VSQL 通过 SQL_ID 关联,用于获取会话正在或最近执行的 SQL 文本。
VLOCK 提供更底层的锁信息,如锁类型(TX, TM)、持有模式和请求模式。
VHANG_INFO 高级诊断视图,在执行 ORADEBUG HANGANALYZE 后使用,用于分析复杂的挂起问题。

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

相关文章:

  • Dify插件SDK开发指南:基于OpenAI标准扩展AI应用能力
  • R 4.5低代码平台实测对比:拖拽建模效率提升680%,但92%用户忽略这1个安全配置项
  • Siemens 6SE3190-0DX87-2DA0制动模块
  • 使用OpenClaw构建AI智能体时配置Taotoken作为模型供应商指南
  • 美国网络中断激增,Eero Signal 为小企业提供经济备用方案,两种订阅计划可选!
  • 为您省心的官方选择:Ledger授权店选购全攻略
  • 裸奇点计算
  • PPT 一键转视频!slides2video这个开源工具让豆包 TTS 自动配音,再也不用熬夜录旁白了
  • DASH技术:LLM确定性训练的革命性突破
  • 前端表单构建器:声明式配置与组件化架构实践
  • 数据零件库:构建覆盖所有细分行业的数据要素“标准工业体系”
  • 树莓派4迷你NAS套件:扩展性与散热优化实践
  • CXL vs. PCIe 5.0 vs. NVLink:下一代AI服务器该选谁?深度横评与选型指南
  • Dify 2026缓存性能瓶颈诊断工具链首发:5分钟定位Key倾斜/序列化膨胀/连接池争用(含CLI命令速查表)
  • 保姆级教程:全志A133 Android 10.0平台GPS模块移植实战(以WT-11-AK为例)
  • 嵌入式智能系统技术解析与实战应用
  • AI 术语通俗词典:轮廓系数
  • 构建你的“第二大脑”:技术人知识管理终极方法论
  • TMS320C6678 DSP中断配置避坑指南:CSL与SYS/BIOS两种方法实战对比
  • FactArena框架:大语言模型事实核查的全流程评估
  • 2026成都涵洞钢模板技术解析:成都钢模板租赁/成都防撞墙钢模板/成都隧道涵洞钢模板/四川圆柱钢模板/四川墩柱钢模板/选择指南 - 优质品牌商家
  • 元认知学习法:为什么高手学新技术总是比你快?
  • 别只盯着‘农旅融合’:用Python和数据分析,我帮老家果园多赚了30%
  • 用STM32F103C8T6给树莓派DIY一个智能温控风扇,附完整代码和PCB文件
  • conda 虚拟环境 python ,torch,torchvison 版本选择
  • [Android] 小柚市场app v2.3.0.8安卓版TV版
  • 别再傻傻分不清:SAP MM中MRP Type与MRP Profile保姆级配置指南与避坑要点
  • 告别卡顿!在IMX6ULL上优化LVGL性能的几条实用配置建议
  • 如何高效管理Steam成就:Steam Achievement Manager完整使用指南
  • RK3588 Android12内核编译踩坑实录:从‘缺少clang’到成功烧录的完整解决流程