CentOS系统上Informix数据库故障排查指南
uname -a查看系统内核版本;通过onstat -k all检查Informix实例状态(运行/停止、内存/进程使用);查看Informix日志(默认路径:/opt/IBM/informix/log/server.log或/var/log/informix/online.log)及系统日志(/var/log/messages、journalctl -xe)获取错误详情。onstat监控系统状态、onlog解析日志、onparams管理日志空间),逐步定位具体进程、配置项或硬件。top、iostat)、优化配置(如调整内存分配)以降低故障概率。onstat -x -r 10监控长事务回滚状态,通过日志回滚速率估算剩余时间;onstat -c | grep MSG获取),找到最近一条“Aborting Long Transaction”记录,确定具体事务;onstat -u | grep (userthread)查找关联会话ID,再用onstat -g ses <session_id>查看会话执行的SQL,定位触发长事务的动作。onstat -l查看逻辑日志状态,若所有日志的flags显示为U-(已使用未备份),则需检查备份流程(如磁带满、磁带机故障);onstat -x检查事务的beginlg字段,确认是否有活动事务或检查点信息占用日志(包含检查点的日志需保留至快速恢复完成)。onparams -a -d <DBspace> -s <size> -i在当前日志后动态增加新日志(IDS 9.3及以上版本支持,无需执行0级备份)。partnum(通过select partnum from systables where tabname='table_name'或oncheck -pt database:tabname获取);onstat -k | grep <partnum>查找锁信息,关注owner字段(锁拥有者的地址);onstat -u | grep <owner>获取锁拥有者的会话ID,进而定位具体会话及执行的SQL。LOCKMODE参数调整);优化SQL(如添加索引、减少全表扫描),缩短事务执行时间。onstat -d显示chunk的flag状态为down,无法访问该chunk中的数据。ls -l /dev/<device_name>确认设备路径;informix用户有读写权限),使用ls -l /dev/<device_name>查看权限;dd if=/dev/<device_name> of=/dev/null bs=1M count=100命令读取设备数据(仅读取,不修改),验证设备是否可正常访问。chown informix:informix /dev/<device_name>)。onmode -c startup后,数据库无法启动,无响应或报错。/opt/IBM/informix/log/server.log或/var/log/informix/online.log),获取启动过程中的详细错误信息;/var/log/messages、journalctl -xe),查看系统层错误(如内存不足、磁盘空间耗尽);getenforce),若为Enforcing,临时设置为Permissive模式(setenforce 0)后重启Informix,排除SELinux拦截;/opt/IBM/informix/etc/onconfig)的正确性,重点检查内存分配(如BUFFERPOOL大小)、磁盘空间(ROOTPATH、LOGPATH所在分区是否有足够空间)、路径配置(如$INFORMIXDIR是否指向正确目录);dmesg查看内核消息,free -m查看内存,df -h查看磁盘空间),确保硬件正常运行;sudo /etc/init.d/informix restart)或系统(reboot),部分临时问题可通过重启解决。