- 首页 >
- 问答 >
-
智能运维 >
- CentOS中Informix的故障排查步骤有哪些
CentOS中Informix的故障排查步骤有哪些
小樊
44
2025-12-17 13:28:00
CentOS 上 Informix 故障排查步骤
一 快速定位与系统层面检查
- 明确现象与影响范围:应用报错、会话挂起、实例无响应、检查点变长、磁盘告警等,记录首次出现时间与触发操作。
- 查看系统资源与告警:使用 top/free/df 检查 CPU、内存、磁盘空间;磁盘满或 Inode 耗尽会直接导致实例异常。
- 检查系统与安全日志:查看 /var/log/messages、/var/log/secure 中与 informix 相关的错误与权限拒绝信息。
- 验证网络连通与端口:对数据库主机执行 ping/ss -lntp | grep <端口>;如启用防火墙,放行相应端口(示例:firewall-cmd --permanent --add-port=1526/tcp --reload;请以实际端口为准)。
- 确认实例进程与监听:ps -ef | grep oninit;必要时使用 onstat - 系列命令初步判断实例状态。
二 实例状态与日志定位
- 获取实例概要:执行 onstat - 查看共享内存、会话、锁、I/O 等总体概况;如实例未完全启动,优先检查 MSGPATH 指向的日志文件(示例:onstat -c | grep MSGPATH)。
- 检查逻辑日志:onstat -l 观察日志状态;若大量日志标志为 U------(已用未备份),说明日志满或备份受阻,需优先处理,否则业务会停摆。
- 检查长事务:onstat -x -r 10 监控回滚进度;结合日志中 “Aborting Long Transaction” 定位事务与 session,必要时缩小事务粒度或加速回滚。
- 检查会话与 SQL:onstat -g sql 与 onstat -g ses 定位长时间运行或阻塞的 SQL;必要时用 onmode -z 终止问题会话(谨慎)。
- 检查锁冲突:出现 -243/-244 等锁错误时,先取表 partnum(如 oncheck -pt db:tab 或查询 systables),再用 onstat -k | grep 找锁持有者,最后 onstat -u | grep <owner_addr> 定位会话并处置。
三 存储与空间问题处理
- 检查 Dbspaces 与 Chunk:onstat -d 查看 flags;若 down,说明 I/O 失败/设备异常/权限错误/链接失效。优先在操作系统层面确认设备存在、权限正确(如属主 informix:informix、权限 660/770),必要时用只读 dd 验证设备可用性。
- 处理逻辑日志满:
- 恢复备份链:尽快执行 ontape -l(或企业级 onbar)释放已备份日志;若备份设备异常,先修复备份链路。
- 动态扩容:在 IDS 9.3x 及以上版本可用 onparams -a -d -s -i 在线追加日志,缓解空间压力(需有可用 dbspace)。
- 识别不可覆盖日志:即便已备份,若日志包含活动事务或检查点信息(如 flags 最后一位为 L 的日志之后),仍不可重用,需等待回滚/检查点推进或扩容。
- 临时目录与权限:确保 /INFORMIXTMP 或 $INFORMIXTMP 存在且权限正确(如 770),空间充足;权限过宽(如 0777)或“目录不受信任”会阻止实例初始化。
四 连接与会话问题排查
- 服务与监听:确认实例已启动(如 oninit -vy),监听端口在 /etc/services 与 sqlhosts 中一致;客户端以 dbaccess 或驱动连接测试。
- 客户端配置:核对 sqlhosts(服务器名、协议、主机、端口)与应用连接串;JDBC/ODBC 需匹配 SERVERNAME/DB_LOCALE/CLIENT_LOCALE 等参数。
- 防火墙与 SELinux:放行数据库端口(示例:firewall-cmd --permanent --add-port=1526/tcp --reload);若启用 SELinux,可临时 setenforce 0 验证是否为策略阻断,再改为 permissive 或配置策略放行。
- 资源限制:若报共享内存或文件描述符不足,提升 ulimit -n(如 65535)并在 /etc/security/limits.conf 持久化;检查内核共享内存参数是否足够。
五 性能异常与 SQL 问题定位
- 定位问题 SQL:onstat -g act 与 onstat -g sql 找出占用 CPU/锁 的会话与语句;结合应用与模块变更时间点分析。
- 执行计划与索引:对问题 SQL 执行 SET EXPLAIN ON/Avoid_execute 输出查询计划,检查是否发生 全表扫描、缺失索引或统计信息过期;必要时创建/优化索引并收集统计信息。
- 检查点与 I/O:若 检查点持续时间 明显变长、系统 CPU 空闲低且 WIO 升高,优先排查存储 I/O 瓶颈、大事务/批量作业与锁等待,必要时错峰或拆分作业。