obdiag如何分析历史锁信息

【 使用环境 】测试环境
【 OB or 其他组件 】obdiag
【 使用版本 】4.3.0
【问题描述】
目前版本4.3.0 如何分析锁等待,之前某一个版本我测试过是可以通过日志中找到哪个session导致的锁,现在的版本反而无法分析了,哪位小伙伴可以说明下。
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

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

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

@论坛小助手

1 个赞

@论坛小助手

1 个赞

对于分析历史锁信息的需求,您可以尝试使用 obdiagrca (Root Cause Analysis) 功能。首先,查看支持的故障场景列表,通过 obd obdiag rca list 命令实现。如果有与锁等待相关的场景,使用 obd obdiag rca run 进行分析。如果没有找到合适的场景,考虑收集相关日志信息并通过其他方式进一步分析。如果以上方法仍然无法解决问题,建议联系官方技术支持寻求帮助。

检索到的文档如下:

  1. 诊断工具命令组
1 个赞

https://www.oceanbase.com/docs/common-obdiag-cn-1000000005726897
你看看这个文档 是不是你想要的

1 个赞

不行,这个只能看实时的了,历史的看不了,之前某个版本是可以从日志中查询的,现在不行了

1 个赞

[root@ocp ~]# obdiag rca run --scene=lock_conflict
obdiag version: 4.3.0
rca finished. For more details, the result on ‘./obdiag_rca/obdiag_lock_conflict_20260508163710’
You can get the suggest by ‘cat ./obdiag_rca/obdiag_lock_conflict_20260508163710/record.table’
Trace ID: 19b89a4c-4ab9-11f1-bc5a-0050568ab65c
If you want to view detailed obdiag logs, please run: obdiag display-trace 19b89a4c-4ab9-11f1-bc5a-0050568ab65c
[root@ocp ~]# cat ./obdiag_rca/obdiag_lock_conflict_20260508163710/record.table
obdiag version: 4.3.0
observer Version: 4.2.1.7
±---------------------------------+
| record |
±-----±--------------------------+
| step | info |
±-----±--------------------------+
| 1 | observer version: 4.2.1.7 |
±-----±--------------------------+
The suggest
±-------------------------------------------+
| record |
±-----±------------------------------------+
| step | info |
±-----±------------------------------------+
| 1 | Found 1 blocked locks |
| 2 | Holding lock trans_id: 39792003 |
| 3 | Holding lock session_id: 3221633748 |
| 4 | Waiting lock trans_id: 39810441 |
| 5 | Waiting session not found |
±-----±------------------------------------+
The suggest: Waiting session not found. You can kill holding_lock_session_id: 3221633748
实时可以。但是历史搞不了

1 个赞

[root@ocp ~]# obdiag rca run --env --help
Traceback (most recent call last):
File “/opt/oceanbase-diagnostic-tool/lib/site-packages/src/common/diag_cmd.py”, line 1180, in _env_scene
key, val = value.split(’=’, 1)
^^^^^^^^
ValueError: not enough values to unpack (expected 2, got 1)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “obdiag.py”, line 63, in
File “obdiag.py”, line 54, in main
File “/opt/oceanbase-diagnostic-tool/lib/site-packages/src/common/diag_cmd.py”, line 427, in do_command
return self.commands[base].init(cmd, args).do_command()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/opt/oceanbase-diagnostic-tool/lib/site-packages/src/common/diag_cmd.py”, line 427, in do_command
return self.commands[base].init(cmd, args).do_command()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/opt/oceanbase-diagnostic-tool/lib/site-packages/src/common/diag_cmd.py”, line 262, in do_command
self.parse_command()
File “/opt/oceanbase-diagnostic-tool/lib/site-packages/src/common/diag_cmd.py”, line 248, in parse_command
return super(ObdiagOriginCommand, self).parse_command()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/opt/oceanbase-diagnostic-tool/lib/site-packages/src/common/diag_cmd.py”, line 183, in parse_command
self.opts, self.cmds = self.parser.parse_args(self.args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “optparse.py”, line 1387, in parse_args
File “optparse.py”, line 1427, in _process_args
File “/opt/oceanbase-diagnostic-tool/lib/site-packages/src/common/diag_cmd.py”, line 81, in _process_long_opt
OptionParser._process_long_opt(self, rargs, values)
File “optparse.py”, line 1501, in _process_long_opt
File “optparse.py”, line 784, in process
File “optparse.py”, line 805, in take_action
File “/opt/oceanbase-diagnostic-tool/lib/site-packages/src/common/diag_cmd.py”, line 1198, in _env_scene
raise Exception(“Key or val ({1}) is illegal: {0}”.format(e, value))
Exception: Key or val (–help) is illegal: not enough values to unpack (expected 2, got 1)
[PYI-3138725:ERROR] Failed to execute script ‘obdiag’ due to unhandled exception!

1 个赞

点赞~~

1 个赞

好好学习!!!

1 个赞

学习

1 个赞

你是想分析历史所有的锁等待么 那估计你的日志也要保留很久

1 个赞

基本上可以从日志上提取分析啊