主机: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,事务自动回退了。