__all_virtual_lock_wait_stat视图的会话ID列和被阻塞列好像值有问题

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】测试环境
【 使用版本 】OB社区版4.2.1
【问题描述】清晰明确描述问题
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

我创建了2个会话模拟阻塞关系,但是我发现题目的视图里面存储的阻塞关系好像是错误的

如下
–会话1
SET autocommit=0;
update sbtest1 a set a.pad=‘1’
where a.k=111225;

–会话2
SET autocommit=0;

update sbtest1 a set a.pad=‘1’
where a.k=111225;

–如图

1 个赞

虚拟表别用,不保证准确性。btw, 这个虚拟表里 block_sess_id 貌似是个没用到列。
推荐使用 GV$OB_LOCKS 看行锁信息

__all_virtual_lock_wait_stat 表会遍历等待队列,打印出等待队列里面的每一个等待的请求信息,其中:

  • session_id是正在等待的请求所关联的session_id。
  • block_session_id是一个具有误导性的命名,其含义为:等待row key的一系列session id中的队列首位的请求所关联的session id。

也就是不看block_session_id这个列,直接看事务那个列,可以这么理解吧

是的,参考 holder_trans_id 这个字段。