1. 明确问题现象
记录故障的具体表现(如数据库无法启动、查询超时、报错信息)、发生时间及触发条件(如执行某SQL后出现),尝试在测试环境重现问题以定位触发因素。
2. 收集系统与数据库日志
/var/log/messages
、/var/log/syslog
、dmesg
输出,查看内核错误、硬件报警或系统资源异常(如OOM Killer杀死进程);/opt/IBM/informix/log/
或数据库目录下,如<dbname>.log
),获取错误代码(如SQLCODE)、错误描述及发生时间;ps -ef | grep informix
确认oninit
(数据库引擎)、onstat
(监控工具)等关键进程是否运行,onmode -m
查看数据库运行模式(在线/离线)。3. 检查系统资源使用情况
df -h
检查数据库目录(如/opt/IBM/informix/dbs
)、日志目录(如/opt/IBM/informix/log
)的磁盘使用率,若超过80%可能导致写入失败;free -m
查看内存剩余量,top
/htop
识别内存占用过高的进程(如Informix缓冲池耗尽);top
查看CPU使用率,iostat -x 1
监控磁盘I/O负载(如%util
接近100%表示磁盘瓶颈)。4. 验证配置文件正确性
$INFORMIXDIR/etc/onconfig.<dbname>
(如onconfig.tramsserver
),确认关键参数设置(如ROOTPATH
(根dbspace路径)、LOGPATH
(逻辑日志路径)、BUFFERPOOL
(缓冲池大小))是否符合当前环境;echo $INFORMIXDIR
(数据库安装目录)、echo $ONCONFIG
(onconfig文件名)、echo $LD_LIBRARY_PATH
(库文件路径)验证环境变量是否正确;/opt/IBM/informix/etc/sqlhosts
文件,确认主机名、端口(默认1526
)、连接类型(onsoctcp
/onipcshm
)配置正确,使用ping
、telnet <ip> <port>
测试网络连通性。5. 使用Informix诊断命令排查常见故障
onstat -l
查看逻辑日志状态,若flags
列显示U------
(未备份),需检查备份流程(如ontape
/onbar
是否正常);若日志包含活动事务(通过onstat -x
查看beginlg
),需等待事务结束或手动终止(onmode -z <sid>
);若日志空间不足,可通过onparams -a -d dbspace_name -s size
添加新日志。onstat -u
查看当前会话及锁信息,识别锁拥有者(locker
)及被锁对象(tabl
);调整隔离级别(如SET ISOLATION TO DIRTY READ
降低锁粒度)、设置锁等待时间(onconfig
中LOCKWAIT
参数)或优化SQL(减少长事务、批量操作)。onstat -d
查看chunk状态,若flags
列显示down
,需检查chunk路径(onstat -d
中的path
)是否存在、权限是否正确(chown informix:informix <chunk_path>
)、磁盘是否正常(dd if=<chunk_path> of=/dev/null bs=2048k
测试可读性);修复后使用onspaces -s <dbspace> -p <chunk_path> -o <offset> -s <size>
重新激活chunk。onstat -g trs
查看事务状态,若事务长时间运行(超过LTxHWM
/LTxEHWM
阈值),需终止会话(onmode -z <sid>
)或拆分事务(将大操作分解为多个小提交)。6. 解决常见错误代码
alter dbspace <name> add chunk <path> size <size>
)或清理无用数据;select * from systables where tabname='<table_name>'
)。7. 预防与监控措施
ontape -s
每日增量备份、onbar
每周全量备份),测试备份恢复流程;cron
脚本或监控工具(如Zabbix、Prometheus)监控磁盘空间、内存、CPU、数据库状态(onstat -g ses
),设置阈值告警;update statistics
更新统计信息(优化查询计划)、defragment
整理表碎片(alter table <name> defragment
)、重建索引(rebuild index <name>
);