informix锁
admin
2023-06-07 10:01:41
0

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

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

107:ISAM error:record is locked

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

 

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

可以重点检查onstat-g sqlUPDATE,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号表示进行此操作的用户进程,找到rowid0的记录(如果有的话)。

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、看表的锁级别

1oncheck -ptdatabase_name:table_name

2select tabname, locklevel fromsystables where ...

2、设置锁级别

   alter tablet_test lock mode (ROW)


相关内容

热门资讯

AI热潮下的公关困境:英国企业... IT之家 5 月 24 日消息,据《卫报》今天报道,各大公关企业表示,英国各大公司如今正在想方设法把...
原创 6... 最近手机圈可太热闹了,小米、iQOO、红米、联想一个接一个地发新机,后面还有一大堆在路上,简直就跟下...
伊朗方面披露美伊或将签署的备忘... △伊朗德黑兰(资料图)总台记者24日自伊朗多个消息渠道了解到伊朗与美国或将签署的备忘录草案的部分内容...
京东工业发布AI智采管家 助力... 当前,新一轮科技革命与产业变革加速演进,人工智能正成为推动中国工业转型升级的核心引擎。长期以来,中小...
2026三门峡横渡母亲河活动启... 5月24日,2026年“大江大河”全国群众公开水域游泳系列赛(三门峡站)暨2026中国·三门峡横渡母...
led吸顶灯一半亮一半不亮怎么... 当 LED 吸顶灯一半亮一半不亮时,可能是以下原因导致的:1. LED 灯珠损坏:部分 LED 灯珠...
不让孩子看电视的方法 孩子们在成长过程中,电视是他们的一种娱乐方式,但是看电视时间过长会对孩子的健康和发展产生**影响。所...
奥克斯全自动洗衣自动进水管进水... 1、可能是水位开关性能不良,不能精准的识别水位,引起进水太多导致的。2、可能是溢水管本身损坏造成的。...
全自动洗衣机水管加长方法 对于家庭使用的全自动洗衣机来说,水管长度是需要考虑的重要问题。如果水管长度不够,就会给使用带来很多麻...
全自动洗衣机排水管怎么安装方法 波轮洗衣机排水管的更换方法:1、更换排水管前需要先准备一款新的排水管,更换排水管前不要忘记断开洗衣机...