GBASE南大通用数据库GBase 8s常见问题解析 -- 查找锁会话并解锁

本文摘自GBASE南大通用社区,by:wty,原文请点击:GBase 8s常见问题 -- 查找锁会话并解锁|GBASE社区|天津南大通用数据技术股份有限公司|GBASE-致力于成为用户最信赖的数据库产品供应商

问题现象

执行SQL时报错

244: Could not do a physical-order read to fetch next row.

154: ISAM error: Lock Timeout Expired

或者

107: ISAM error:  record is locked.

或者

106: ISAM error: non-exclusive access.

这些报错都与锁相关,当你的一个SQL偶尔报类似错误,可能只是运气不好,碰巧执行的时候被锁了。

如果多次执行一直报锁,就需要考虑是不是有会话长时间锁住数据没有释放,需要强制结束掉这个会话来解锁。

解决方法

1)通过GBase Data Stdio解锁

打开数据库导航中,数据库连接下面的会话页面,在右侧会话页面中选择锁

找到被锁的表对应的锁会话ID

切换到会话页面找到刚才的会话ID,点右键,选择结束强制结束会话

2)通过SQL和命令行解锁

连接sysmaster系统库,查询syslocks系统表,查询锁信息,推荐使用where条件来筛选结果

[gbasedbt@test ~]$ dbaccess sysmaster -

Database selected.

> select * from syslocks;

dbsname  wty_utf8
tabname  aaa
rowidlk  0
keynum   0
type     IX
owner    160
waiter 

找到备锁表那一行数据对应的owner列里的会话ID

执行命令强制结束会话解锁

onmode -z 160

相关要点

107: ISAM error:  record is locked.

这个报错一般是没有配置锁等待时间,导致碰到锁立刻就报错结束查询,配置锁等待时间可以大幅度减少锁相关的报错

106: ISAM error: non-exclusive access.

这个报错一般是正在对表执行alter table之类的修改表结构操作,也可能是正在创建索引,贸然强制结束锁会话可能会导致回滚,相关操作失败。建议先确定操作源头再考虑等待执行完毕还是强制解锁。

如果不需要获取特别准确的数据时,可以暂时将隔离级别设置为DIRTY READ,此模式不管数据是否已经提交都会直接读取,不需要进行解锁就可以查出数据。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值