暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

OB数据库表级锁问题

IT那活儿 2025-06-23
199
点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!


排查表锁问题

1.1 查看当前是否有锁
SYS@Tenant 进入数据库执行以下语句:
select *from gv$ob_locks;
1.2 查看有问题的表的id
SYS@Tenant 进入数据库执行以下语句:
Select tablet_id from dba_ob_table_locations whereupper (table_name)='table_name';
1.3 根据锁表信息和问题表id确认是否为锁问题
确认206682ID所属表存在表锁。


问题处理

2.1 根据表ID可查看出造成锁的session信息
SYS@Tenant 进入数据库执行以下语句:
select * from gv$ob_locks where id1 in (select tablet_id from dba_ob_table_locations whereupper (table_name)='table_name');

2.2 根据以上排查信息session的trans_id号进行查看对应的session_id
root@sys中的oceanbase库执行:
select svr_ip,session_id from __all_virtual_trans_stat where trans_id=19829261;
2.3 释放锁
SYS@Tenant进入数据库执行以下语句:
ALTERSYSTEMKILLSESSION'3221969299'IMMEDIATE;
至此锁释放完成。


优化后处理方式

优化后处理方式:
select
  b.SVR_IP,
  b.TENANT_ID,
  b.id1,
  a.table_name,
  b.type,
  b.trans_id
from
  dba_ob_table_locations a,
  gv$ob_locks b
where
  b.id1 = a.tablet_id;

结果:
在租户SYS用户下执行:
select
  'alter system kill session ''' || session_id || ''' immediate ;'
from
  GV$OB_TRANSACTION_PARTICIPANTS
where
  tx_id in (
    select
      TRANS_ID
    from
      gv$ob_locks
    where
      id1 in (
        select
          tablet_id
        from
          dba_ob_table_locations
        where
          table_name = upper('&table_name')
      )
  )
androle = 'LEADER';

结果如下:
执行该语句即可释放指定锁进程。

END


本文作者:成 龙(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论