千家信息网

informix锁

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,1.在将一个表unload时,出现:244:Could not do a physical-order read to fetchnext row107:ISAM error:record is lo
千家信息网最后更新 2026年11月02日informix锁

1.在将一个表unload时,出现:

244:Could not do a physical-order read to fetchnext row

107:ISAM error:record is locked

在不重启动数据库情况下,如何解锁?

onstat -g ses和onstat -g sql可以通过SQL语句检查那些用户,那些SQL在操作这张表。

可以重点检查onstat-g sql中UPDATE,DELTE,INSERT语句。

onstat -k看锁的情况,通过输出的tblsnum一列检查是否这张表被锁了。

tblsnum可以通过下面的SQL去获得

select tabname,hex(partnum) from systableswhere tabname="tabname"

这个是我经常用得看谁锁表得小脚本,后面可以再加上onstat -g 得选项。看具体执行了什么东西。

代码:

onstat -k|grep X|awk '{print $3}'|sort -u>tmp1.txt

cat tmp1.txt|while read line

do

onstat -u|grep $line

done

rm tmp1.txt

2.近期我在对informix数据库的表进行update时,总也报-244的错误,我已经在配置文件中加大的锁的个数,

但还是不行,不知-244的错误还与什么有关系?

请查看该表的锁级别,有page,row之分

SQL code只能说明操作上的故障,最终要看ISAM错误代码。

只要索引没问题的前提下,估计是锁并发性的问题,而不是锁不够的问题。

可能通过走索引的方式去尽量避免。

3.在Informix里如果应用将某个表锁住了,如何查出是那个进程锁住的,又如何释放?

1、发现锁表(以tab_test为例)。

2、在systables中找出tab_test对应的partnum。

3、用计算器将此数转换成十六进制。

4、用onstat -k|grep [十六进制] 找到相应的锁,并记录相对应的owner号,此owner号表示进行此操作的用户进程,找到rowid为0的记录(如果有的话)。

5、用onstat -u|grep [owner号] 找到相应的用户进程。

6、如果想看看到底是哪个语句产生的锁,用:onstat -g ses [owner号] 查看语句。或者用onmode -z [owner号]杀之。

谢谢楼上的,解决了我找了很久的问题。不过最后一点是session id

4.如果您执行SQL语句时候出现下面的错误提示:

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

113: ISAM error: the file is locked.

毫无疑问,您要访问的表被别人锁住了。

如果您的使用了set lock mode to wait 语句,onstat -u 命令可以报告出会话在等待锁资源的信息(

标志位"L"),如:

c0000000379015e8 L--PR-- 4626 informix tJc0000000006e45f0 20 1 0 0

超时后报错:

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

154: ISAM error: Lock Timeout Expired

那么,怎么样找出是谁锁住了这个表呢?介绍一个小技巧,执行下面SQL语句:

DATABASE sysmaster;

SELECT owner FROM syslocks WHEREtabname="表名";

得到的owner就是加锁的会话号SID,于是我们就可以使用 onstat -g ses SID 命令查看该会话的信息,

包括是哪个用户、执行了什么SQL语句。还可以通过DBA身份使用onmode -z 命令杀断该会话。

不过方法真的不错,比我的好多了:

1、发现锁表(以tea为例)。

2、在systables中找出tea对应的partnum。

3、用计算器将此数转换成十六进制。

4、用onstat -k|grep [十六进制] 找到相应的锁,并记录相对应的owner号,此owner号表示进行此操作的用户进程。

5、用onstat -u|grep [owner号] 找到相应的用户进程。

6、如果想看看到底是哪个语句产生的锁,用:onstat -g ses [owner号] 查看语句。或者用onmode -z [owner号]杀之。

5.我有一个表,再用ISQL查询时,提示记录被锁定,查不出任可内容,用unlock table 表名,又提示我表未被我锁定。

确认为表中的某一记录被锁定了。在不重启数据库和表数据情况下,怎样解锁。

记录应该是被其他进程的数据库访问锁住了,

只能找出源头,释放锁才行。

解锁步骤:

1、发现锁表(以tpm_radio_bts为例)。

2、在systables中找出tpm_radio_bts对应的partnum。

3、用计算器将此数转换成十六进制。

4、用onstat -k|grep [十六进制] 找到相应的锁,并记录相对应的owner号,此owner号表示进行此操作的用户进程。

5、用onstat -u|grep [owner号] 找到相应的用户进程。

6、如果想看看到底是哪个语句产生的锁,用:onstat -g ses [owner号] 查看语句。或者用onmode -z [owner号]杀之。

6.怎样查看数据库现在用的是什么锁?怎样设置informix的锁? 我现在要把一个表从页级锁改为记录琐该怎么办啊?

1、看表的锁级别

(1)oncheck -ptdatabase_name:table_name

(2)select tabname, locklevel fromsystables where ...

2、设置锁级别

alter tablet_test lock mode (ROW)


语句 用户 进程 十六进制 数据 数据库 错误 问题 可以通过 命令 情况 级别 计算器 提示 检查 代码 信息 索引 面的 不行 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技互联网 北京路客互联网科技有限公司 中关村互联网科技集团 科技平台互联网 上海互联网科技有限公司 互联网与未来科技 上海喔噻互联网科技 成都仁贤领冠互联网科技有限公司 青岛中康互联网医疗科技有限公司 顶级互联网科技成果有哪些 江阴互联网智能科技产品进口 国大互联网教育科技有限公司工作 乌苏新华互联网科技做什么的 996高科技互联网公司 广州新华互联网科技学校电竞方面 广州百诚互联网科技有限公司官网 珠海东科互联网科技有限公司 艺电能源互联网科技有限公司招聘 悟空问答互联网科技 安徽零酒互联网科技有限公司 中国互联网科技工作委员会毛军 互联网科技与金融科技 北京互联网科技有限公司 互联网科技革命 高科技互联网发展前景如何 电子商务与互联网科技的关系 风投北京互联网科技 易企秀互联网科技是做什么的 银川新华互联网科技学校招聘 株洲百竞科技的互联网营销顾问
0