温馨提示×

Debian Informix故障排查方法

小樊
46
2025-10-09 11:49:39
栏目: 智能运维

1. 收集基础信息
首先确认系统与数据库进程状态,使用ps -ef | grep informix查看oninit(数据库引擎)、onstat(监控工具)、dbaccess(客户端工具)等关键进程是否运行;通过top/htop监控CPU、内存占用,df -h检查磁盘空间(确保/opt/informix/var/log等目录有足够空间);查看系统日志(/var/log/messages/var/log/syslogdmesg)和Informix专用日志(/var/log/informix/*.log/opt/informix/log/*.log),获取错误时间戳及描述(如“Logical log full”“Lock timeout”)。

2. 使用Informix专用工具诊断

  • onstat命令:实时监控数据库状态,常用场景包括:
    • onstat -l:检查逻辑日志状态(若所有日志flagsU------,说明逻辑日志满);
    • onstat -u:查看会话信息(识别锁等待、长事务,如-243/-244锁错误对应的会话ID);
    • onstat -d:检查chunk状态(若flagsdown,说明存储设备I/O失败);
    • onstat -g act:查看活跃会话(定位高负载SQL);
    • onstat -g ses <session_id>:深入分析特定会话的SQL执行、锁持有情况。
  • onmode命令:应急调整数据库模式,如onmode -z <session_id>终止导致死锁的会话;onmode -m切换至单用户模式(用于修复严重损坏)。
  • oncheck命令:检查数据库一致性,如oncheck -p <dbname>检查物理结构(表空间、chunk),oncheck -u <dbname>检查逻辑结构(表、索引)。

3. 常见故障排查与处理

  • 逻辑日志满
    现象:数据库停止响应,onstat -l显示所有日志未备份。
    处理:① 确认逻辑日志备份流程(如ontape/onbar是否正常);② 若日志包含活动事务(onstat -x查看beginlg),需等待事务结束或回滚;③ 若日志包含检查点信息(flags最后一位为L),需完成检查点;④ 使用onparams -a -d <dbspace> -s <size> -i(IDS 9.3+)在线添加新日志(无需0级备份)。
  • 锁冲突/长事务
    现象:出现-243(无法定位表行)、-244(无法物理读取)等错误,onstat -u显示“Lock wait”状态。
    处理:① 用onstat -u找出锁拥有者(owner字段)及等待者(waiter字段);② 优化SQL(减少全表扫描、添加索引)缩短事务时长;③ 调整隔离级别(如使用dirty read降低锁争用);④ 设置锁等待超时(LOCKMODE参数,默认WAIT,可改为NOWAIT立即报错);⑤ 终止问题会话(onmode -z <session_id>)。
  • Chunk I/O失败
    现象:数据库日志提示“Chunk I/O error”,onstat -d显示对应chunk flagsdown
    处理:① 用dd if=<chunk_path> of=/dev/null bs=2048k测试存储设备可读性(仅读操作);② 检查设备权限(chown informix:informix <chunk_path>chmod 660 <chunk_path>);③ 确认设备是否存在(ls -l <chunk_path>);④ 修复后用onspaces -s <dbspace> <chunk_name>恢复chunk状态。
  • 性能瓶颈
    现象:SQL执行慢、系统负载高。
    处理:① 用onstat -g ses找出高负载会话及对应SQL;② 用onstat -g sql分析SQL执行计划(检查是否缺少索引);③ 调整缓冲池参数(BUFFERS设为内存1/4,LRUS=32,LRU_MAX_DIRTY=2/LRU_MIN_DIRTY=1);④ 增加CLEANERS数量(根据磁盘数目调整,通常每块磁盘1个);⑤ 优化CHKPTINTVL(检查点间隔,默认1分钟,可根据负载调整)。

4. 预防与维护

  • 定期备份:使用ontapeonbar进行全量/增量备份(每日全量、每小时增量),并测试备份可用性;
  • 监控告警:部署Zabbix/Nagios监控CPU、内存、磁盘空间、数据库状态(如逻辑日志剩余空间、锁等待数),设置阈值告警;
  • 日志轮转:配置logrotate/etc/logrotate.d/informix)每日轮转日志,保留7天压缩备份(避免日志占满磁盘);
  • 补丁更新:定期检查IBM官网,安装Informix最新安全补丁及性能优化包;
  • 定期维护:每周执行onstat -g stats收集性能统计数据,每月执行oncheck -p检查物理结构,每季度重建索引(针对高频查询表)。

0