Informix 长事务锁表故障

来源:互联网 发布:同花顺软件版本 编辑:程序博客网 时间:2024/06/01 09:17

主机:HP 900 rp4440 A7124B

OS:HP-UX B.11.11 U 9000/800 (tc)

Informix Version:IBM Informix Dynamic Server Version 9.40.FC4W2

故障现象:出账业务无法处理,批价处理卡了一个多小时,所有前台应用失败,发现有很多表被锁死,1、用informix登录set4,onstat -显示如下:
IBM Informix Dynamic Server Version 9.40.FC4W2   -- On-Line (LONGTX) -- Up 203 days 13:20:36 -- 217s
Blocked:LONGTX

正常情况下为:IBM Informix Dynamic Server Version 9.40.FC4W2   -- On-Line -- Up 203 days 14:27:15 -- 2175680 Kbytes

2、查看informix运行日志路径:onstat -c|grep MSG
MSGPATH         /informix/online_charge.log # System message log file path

3、vi /informix/online_charge.log 查找最近一条Aborting Long Transaction纪录:
11:14:47  Aborting Long Transaction: tx 0xc000000049d05748 username: acct30 uid: 109

4、根据事务地址tx 查找flags标识有R且Transactions address即为上面的tx值的userthread

Transactions
address          flags userthread       locks  beginlg curlog  logposit   isol    retrys coord
c000000046ce2028 A---- c000000046ca0028 0      0       753     0x1b9624e8 COMMIT  0
c000000046ce2290 A---- c000000046ca0860 0      0       0       0x0        COMMIT  0
c000000046ce24f8 A---- c000000046ca1098 0      0       0       0x0        COMMIT  0
c000000046ce2760 A---- c000000046ca18d0 0      0       0       0x0        COMMIT  0
c000000046ce29c8 A---- c000000046ca2108 0      0       0       0x0        COMMIT  0

5、onstat -u|grep (userthread) 查找sesion id 如:[/informix]onstat -u|grep c000000049f25958

c000000049f25958 --BPR-- 401956   acct30   -        0                0    146   2274     4060

6、onstat -g ses 401956 找出此session是在干什么,定位出什么动作触发了长事务的形成。

7、长事务形成后,整个数据库只运行这个事务,关联的表都被锁住,其他事务想运行,要么等待,要么重启数据库。

2005-10-22 13:22

2005年10月24日下午又出现长事务锁故障,解决过程是在informix的logdb中增加log块,用informix登录,执行onparams-a -d logdbs -s 128000,删除logdbs,执行onparams -d  -l 26 -y,然后uc -j,事务自动回退了。