Ubuntu Informix故障诊断流程
首先明确故障的具体表现(如数据库无法启动、连接失败、操作报错、性能下降等),记录错误消息、发生时间及触发条件(如特定SQL执行、系统负载高峰)。例如,若数据库无法启动,需确认是否有“shared memory not initialized”“logical log full”等错误提示;若为连接失败,需记录是否提示“Connection refused”“Authentication failed”等。
dmesg
查看内核消息(如硬件错误、启动异常),检查/var/log/syslog
、/var/log/auth.log
(认证相关)、/var/log/kern.log
(内核事件)中的错误信息,定位系统层问题。/opt/informix/log
目录下的错误日志(如online.log
、errlog
),其中包含数据库启动、运行及故障的详细记录(如逻辑日志满、锁冲突、chunk I/O失败等)。使用以下命令监控系统资源使用情况,判断是否因资源不足导致故障:
top
/htop
查看进程CPU/内存占用,free -h
查看内存剩余,vmstat 1 5
监控虚拟内存交换情况(若si/so值持续较高,可能存在内存不足)。df -h
检查磁盘空间(重点关注/opt/informix
目录所在分区),du -sh *
定位大文件;iostat -x 1
查看磁盘I/O负载(若await值过高,可能存在磁盘瓶颈)。ps aux | grep informix
确认Informix服务进程(如oninit
、onmode
)是否运行;systemctl status informix
(若使用systemd)检查服务状态。~/.bash_profile
或~/.bashrc
中的Informix环境变量(如INFORMIXDIR
、INFORMIXSERVER
、ONCONFIG
),确保路径正确且已执行source
命令生效。$INFORMIXDIR/etc/onconfig
(或ONCONFIG
指定的路径)中的关键配置(如ROOTPATH
(rootdbs路径)、LOGPATH
(逻辑日志路径)、DBSPACETEMP
(临时dbspace)、MAXPIECESIZE
(逻辑日志大小))是否符合系统资源及业务需求,修改后需重启Informix服务。onstat -l
查看逻辑日志状态(若flags
列显示U
表示未备份),需备份逻辑日志(onbar
或ontape
工具)或增加逻辑日志空间(onparams -a -d dbspace_name -s size -i
,需预留空闲chunk空间)。/opt/informix/data/rootdbs
权限(需为600
,属主为informix
用户),确认GRUB引导程序是否正常(若无法进入系统,可使用Live CD修复引导),查看oninit
启动日志中的错误信息。informix
用户对$INFORMIXDIR
、$INFORMIXDATA
等关键目录有读写权限(chown -R informix:informix $INFORMIXDIR
),若出现“shared memory not initialized”错误,需检查/dev/shm
权限(需允许informix
用户访问)。ping
测试网络连通性,netstat -tulnp | grep 9088
(默认端口)检查端口监听状态,telnet client_ip 9088
测试客户端连接,确认/etc/resolv.conf
中的DNS配置正确。onstat -k
查看锁等待情况(若存在大量wait
状态的锁),调整隔离级别(如设置为dirty read
)、将表锁改为行锁(ALTER TABLE table_name LOCK MODE ROW
),或终止长时间持有锁的会话(onmode -z sid
)。onstat -g tr
查看长事务(运行时间超过阈值),将大事务拆分为小事务提交,增加逻辑日志空间以避免长事务阻塞恢复。根据排查结果采取对应措施(如修复配置、清理磁盘空间、调整权限、重启服务),操作完成后验证故障是否解决(如重启Informix服务systemctl restart informix
,测试数据库连接isql -v server_name
,执行业务SQL验证功能)。
记录故障现象、排查过程及解决方法,形成文档以便后续参考;定期执行以下预防措施:
Zabbix
、Prometheus
等工具);