记录故障的具体表现(如错误消息、系统行为异常、问题发生时间点),并尝试在测试环境中重现问题,以确定触发条件(如特定SQL执行、批量操作等)。这一步是后续排查的基础,能快速缩小问题范围。
/opt/IBM/informix/log/(如server.log、startup.log),使用tail -f实时查看最新错误;/var/log/messages(系统级错误)、/var/log/secure(认证问题),通过grep过滤关键词(如“informix”“error”);onstat -c:查看数据库连接数、活动会话及锁状态;onstat -k:检查缓冲池命中率(低命中率可能导致性能下降);onstat -m:监控内存使用情况(如共享内存不足会导致启动失败);onstat -d:查看数据库空间状态(chunk是否为“down”、I/O错误);onstat -x:跟踪长事务(如事务回滚进度、阻塞会话)。top(CPU使用率)、free -m(内存剩余)、df -h(磁盘空间)、iostat(磁盘I/O负载)等命令,确认系统资源是否充足(如磁盘空间不足会导致数据库无法写入)。逻辑日志满:
故障现象:数据库停止响应,onstat -l显示所有逻辑日志为“U------”(已使用未备份)。
排查步骤:
onparams -a -d <DBspace> -s <size> -i在当前日志后增加新日志;频繁锁冲突:
故障现象:应用报错“-243(无法定位表中数据)”“-244(无法物理读取下一行)”,onstat -k显示大量锁等待。
排查步骤:
onstat -k找出锁拥有者(owner字段),再用onstat -u定位对应会话;LOCKMODE参数)。长事务:
故障现象:日志中出现“Aborting Long Transaction”,onstat -x显示事务回滚缓慢。
排查步骤:
onstat -x -r 10监控回滚速率(每10秒刷新一次);Chunk I/O失败:
故障现象:onstat -d显示chunk状态为“down”,数据库无法访问对应数据。
排查步骤:
ls -l /dev/<device_name>);chown informix:informix /dev/sdb1);dd if=/dev/<device_name> of=/dev/null bs=1M count=100测试设备读取功能(排除磁盘坏道)。若数据库无法启动,需额外执行以下步骤:
onconfig(如/opt/IBM/informix/etc/onconfig.dat)中的关键参数(ROOTPATH、MIRRORPATH、LOGSIZE)是否正确;getenforce输出“Enforcing”),临时设置为Permissive模式(setenforce 0),重启Informix服务(/opt/IBM/informix/bin/onmode -c startup),确认是否为SELinux导致;systemctl status network)、磁盘(systemctl status dev-md0.device)等服务正常运行;onmode -c status查看数据库当前状态,onmode -c checkdb检查数据库完整性。根据排查结果采取对应措施(如调整配置、修复磁盘、优化SQL),执行后重启Informix服务(systemctl restart informix或/opt/IBM/informix/bin/onmode -c startup),并通过以下方式验证:
onstat -系列命令确认系统状态恢复正常;SELECT 1 FROM systables WHERE tabid=1)验证数据库可访问;