哪位大佬分享一个锁等待和死锁的排查过程嘛

哪位大佬分享一个锁等待和死锁的排查过程嘛

3 个赞

需求同上,学习学习 :+1: :+1: :+1:

1 个赞

select
/*+QUERY_TIMEOUT(3600000000) read_consistency(weak) */
b.TRANS_ID,
case
WHEN b.TYPE = ‘TM’ THEN ‘表锁’
WHEN b.TYPE = ‘TX’ THEN ‘事务锁’
WHEN b.TYPE = ‘TR’ THEN ‘行锁’
ELSE NULL
END
AS lock_type,
ID1,
LMODE,
CASE
WHEN BLOCK = 0 THEN ‘该事务持有锁’
WHEN BLOCK = 1 THEN ‘该事务被阻塞’
ELSE NULL
END
as BLOCK,
a.SVR_IP,
ID,
user,
command,
time,
total_time,
STATE,
info,
retry_cnt,
retry_info,
thread_id,
trace_id
from
gv$ob_processlist a,
GV$OB_LOCKS b,
oceanbase.CDB_ob_table_locations c
where
a.trans_id = b.trans_id
and c.table_name = ‘表名称’
and (
ID1 like concat(’%’ , c.table_id, ‘%’)
OR ID1 like concat(’%’ , c.tablet_id ,’%’)
);
死锁可以查这个表

oceanbase.DBA_OB_DEADLOCK_EVENT_HISTORY

2 个赞

2 个赞

官网文档有查看当前状态的行锁,如果是历史行锁那就只有根据observer.log来排查了

https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000001012955?back=kb

2 个赞

点赞

1 个赞

DBA_OB_DEADLOCK_EVENT_HISTORY,差不多得查这个视图

1 个赞

v4.3.5
ERROR 1146 (42S02): Table ‘oceanbase.cdb_ob_table_locations’ doesn’t exist

https://open.oceanbase.com/blog/9733194352

1 个赞

你是在sys租户下查的么?

如果查询死锁需要查询DBA_OB_DEADLOCK_EVENT_HISTORY这个视图,如果查询锁的问题查询gv$ob_locks,如果问题已经发生过了,需要分析observer的日志,通过过滤关键子 conflict查找那些事务阻塞了那些事务

sys可以了。

不错,需要自己测试下