在CentOS系统上安装和运行Informix时,可能会遇到各种故障。以下是一些常见的故障及其排查步骤:
1. 长事务问题
故障现象:
- 出账业务无法处理。
- 批价处理卡住。
- 所有前台应用失败。
- 很多表被锁死。
排查步骤:
- 使用
onstat -x -r 10
命令监控长事务的回滚状态,通过日志回滚的速率估算回滚时间。 - 查看Informix运行日志路径:
onstat -c grep MSG MSGPATH informix/online_charge.log
。 - 在日志文件中查找最近一条“Aborting Long Transaction”记录,确定具体事务。
- 使用
onstat -ugrep (userthread)
查找会话ID,确定哪些会话受影响。 - 使用
onstat -g ses
找出会话在做什么,定位触发长事务的具体动作。
2. 逻辑日志满
故障现象:
- 数据库不再进行任何操作。
- 使用
onstat –l
命令观察逻辑日志状态,所有逻辑日志都处于已使用未备份状态(flags 为U------)。
排查步骤:
- 检查逻辑日志备份是否出现问题,可能是磁带满或磁带机故障。
- 个别情况下,即使逻辑日志标志为已备份但仍然是不可使用的,可以通过
onstat –x
检查其beginlg
来确定事务的逻辑日志起始位置。 - 在IDS 9.3x 或以后的版本上,可以使用逻辑日志联机增加的功能,在当前逻辑日志后增加新的逻辑日志。
3. 频繁的锁冲突
故障现象:
- 出现锁错误码 -243(Could not position within a table)和 -244(Could not do a physical-order read to fetch next row)。
排查步骤:
- 确定表的
partnum
,通过查询systables
或oncheck –pt database:tabname
查看。 - 使用
onstat –k grep partnum
查找相应的信息,观察其owner
字段的地址信息。 - 使用
onstat –u grep address
获得实际的会话信息,找到具体的锁的拥有者。
4. 数据库 chunk 出现异常,I/O 失败
故障现象:
- 数据库日志中出现 chunk IO 错误,使用
onstat –d
观察 chunk flag 的状态是 down 的状态,数据库操作中不能操作包含在这些 chunk 中的数据。
排查步骤:
- 根据可能性逐一进行检查,如磁盘设备问题、chunk 使用的设备不存在、使用的链接设备不存在、设备的权限错误等。
- 使用
dd
命令实际读取该设备,只能做读取操作,不能写入。
5. Informix 安装问题
故障现象:
- 安装过程中出现错误,如“the wizard cannot continue because of the following error: could not load wizard specified in /wizard.inf (104)”。
排查步骤:
- 通过
which java
找出 Java 的目录,后指定安装参数javahome
。例如:./ids_install -javahome /usr/bin/java
。 - 如果提示缺少
libm.so.6
和libc.so.6
,使用以下命令安装:yum install glibc glibc.i686 glibc-devel.i686 glibc-static.i686 -y yum install ncurses ncurses-devel.i686 ncurses-lib.i686 -y
通过以上步骤,可以有效地排查和解决CentOS系统上运行Informix时遇到的一些常见问题。如果问题依然存在,建议参考Informix的官方文档或联系IBM支持获取进一步的帮助。