数据库锁表的查询和处理

148 篇文章 7 订阅
77 篇文章 0 订阅

如果遇到数据库锁表,通常需要用如下方法处理:

查看表的partnum情况:

oncheck  -pt  shjz_mzb:baf01|grep -i partnum

这个里面包含了多个分区的partnum,也包含了索引的partnum。

    Partition partnum              12584018 

    Partition partnum              12584029 

    Partition partnum              12584019 

    Partition partnum              12584024 

    Partition partnum              12584025 

    Partition partnum              12584031 

    Partition partnum              12584026 

    Partition partnum              12584027 

    Partition partnum              12584030 

    Partition partnum              12584028 

把每个partnum转成十六进制如下:

因为lock table里面记录的是十六进制,而不是十进制。

    Partition partnum              12584018  C0045C

    Partition partnum              12584029  C0045D

    Partition partnum              12584019  C00453

    Partition partnum              12584024  C00458

    Partition partnum              12584025  C00459

    Partition partnum              12584031  C0045F

    Partition partnum              12584026  C0045A

    Partition partnum              12584027  C0045B

    Partition partnum              12584030  C0045E

    Partition partnum              12584028  C0045C

根据partnum查看锁表的情况:

onstat -k |grep -iE 'C0045C|C0045D|C00453|C00458|C00459|C0045F|C0045A|C0045B|C0045E|C0045C'|sort -nrk 6

通过上图可以可以发现:

owner:表示当前哪个会话拿着锁,会话的sid可以通过onstat  -u|grep 96edab28来查看

        会话的具体操作可以通过onstat –g ses $sid来查看

type:HDR+X 表示独占锁

tblsnum:表示表的partnum的十六进制,也就是对那个表进行加锁

rowid:表示在哪个数据行上加锁,每行数据会有一个rowid

上图可以看到都是对rowid=1336802的该行数据进行加锁,但是partnum不一样,也就是表,每个索引树都需要锁住的。

根据owner找到sesion sid之后,onmode -z sid就可以杀掉会话,释放锁了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

请叫我曾阿牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值