温馨提示×

ubuntu informix启动为何失败

小樊
40
2025-12-23 00:10:44
栏目: 智能运维

Ubuntu 上 Informix 启动失败排查与修复

一 快速定位

  • 切换到 informix 用户并检查环境:
    • 确认关键变量:echo $INFORMIXDIR $INFORMIXSERVER $ONCONFIG $INFORMIXSQLHOSTS $LD_LIBRARY_PATH
    • 典型值:INFORMIXDIR=/opt/IBM/informix,ONCONFIG=onconfig.<实例名>,INFORMIXSQLHOSTS=$INFORMIXDIR/etc/sqlhosts
  • 查看引擎日志与系统日志:
    • 引擎日志:tail -n 200 $INFORMIXDIR/tmp/<实例名>.log(很多发行版也会软链到 /var/log/informix/ 或直接使用 $INFORMIXDIR/tmp 下的 online.log)
    • 系统日志:tail -n 200 /var/log/syslog | grep -i informix
  • 先做一次带诊断的启动:oninit -ivy(交互式输出更利于定位)
  • 检查进程与监听:
    • ps -ef | grep oninit;onstat -g srv;netstat -tlnp | grep <端口>(sqlhosts 中配置的端口)
    • 如端口不通,先用 ping/telnet 测试网络与端口连通性

二 常见根因与对应修复

  • 环境变量缺失或错误
    • 典型现象:找不到 onconfig、找不到库、sqlhosts 解析失败
    • 修复:在 informix 用户的 ~/.bash_profile 或 /etc/profile.d/informix.sh 中正确设置 INFORMIXDIR、INFORMIXSERVER、ONCONFIG、INFORMIXSQLHOSTS、LD_LIBRARY_PATH,执行 source 使其生效
  • 权限与目录安全设置不当
    • 典型报错:
      • “permissions 0777 include public write access” → 目录被设为 0777,需改为更安全的 0750/0700
      • “/opt/informix (path is not trusted)” → 目录属主/权限或 ACL 导致引擎不信任
      • “directory /opt/informix/tmp is too secure (has mode 755, needs 770)” → tmp 需 770
    • 修复:
      • chown -R informix:informix $INFORMIXDIR
      • find $INFORMIXDIR -type d -exec chmod 755 {} ;
      • find $INFORMIXDIR -type f -exec chmod 640 {} ;
      • chmod 770 $INFORMIXDIR/tmp
  • 共享内存/资源限制
    • 典型报错:Fatal error in shared memory creation、Allocating and attaching to shared memory…FAILED
    • 修复:
      • 当前会话放宽:ulimit -n 65535;ulimit -c unlimited
      • 永久放宽:/etc/security/limits.conf 增加
        • informix soft nofile 65535
        • informix hard nofile 65535
        • informix soft core unlimited
        • informix hard core unlimited
      • 检查内核共享内存参数(/proc/sys/kernel/shmmax、shmall 等)是否足够,必要时调大后重启
  • 逻辑日志满
    • 典型现象:实例卡在恢复或拒绝新事务
    • 诊断:onstat -l(查看 unbacked/unused 状态)
    • 处理:先备份再切换/清理逻辑日志(如 onmode -c backuplog;必要时增加逻辑日志或调整自动备份策略)
  • 磁盘空间或 chunk 异常
    • 典型现象:I/O 失败、chunk down、无法分配空间
    • 诊断:onstat -d;df -h;检查 $INFORMIXDIR 所在磁盘剩余空间与挂载选项
    • 处理:释放空间、修复文件系统、必要时恢复 chunk 或调整路径到可用磁盘
  • 配置文件错误
    • 典型现象:启动即退出,oninit 提示未知参数或路径错误
    • 修复:核对 $ONCONFIG 指向的 onconfig 文件,检查 ROOTPATH/DBSPACETEMP、NETTYPE、TAPEDEV/LTAPEDEV、LOG_INDEX_BUFFERS 等关键项;确保 sqlhosts 中服务器名、协议与端口一致
  • 安全启动/内核兼容(少数新平台)
    • 现象:驱动/内核模块限制导致引擎初始化失败
    • 处理:在 BIOS 关闭 Secure Boot,或尝试切换至较旧的稳定内核后启动

三 最小可用环境示例

  • 创建用户与目录:
    • sudo groupadd -g 3000 informix
    • sudo useradd -u 3000 -g 3000 -d /opt/IBM/informix -m informix
    • sudo chown -R informix:informix /opt/IBM/informix
  • 配置环境变量(写入 /opt/IBM/informix/etc/informix.rc 或 ~/.bash_profile):
    • export INFORMIXDIR=/opt/IBM/informix
    • export INFORMIXSERVER=ol_informix
    • export ONCONFIG=onconfig.ol_informix
    • export INFORMIXSQLHOSTS=$INFORMIXDIR/etc/sqlhosts
    • export LD_LIBRARY_PATH=$INFORMIXDIR/lib:$LD_LIBRARY_PATH
    • export PATH=$INFORMIXDIR/bin:$PATH
  • 修正关键目录权限:
    • find $INFORMIXDIR -type d -exec chmod 755 {} ;
    • find $INFORMIXDIR -type f -exec chmod 640 {} ;
    • chmod 770 $INFORMIXDIR/tmp
  • 启动与验证:
    • su - informix
    • oninit -ivy
    • onstat -g srv;onstat -l;tail -n 200 $INFORMIXDIR/tmp/online.log

四 仍未恢复时的建议

  • 保留现场:保存 oninit -ivy 完整输出、$INFORMIXDIR/tmp/*.log、/var/log/syslog 相关片段
  • 简化复现:临时使用最小化 onconfig(仅保留 ROOTPATH、必要的 NETTYPE/端口、TAPEDEV 指向 /dev/null),排除磁盘/磁带等外设因素
  • 回退与更新:尝试较旧内核或补丁级别,确认是否为平台兼容性问题
  • 寻求支持:携带上述日志与配置到 IBM/专业社区渠道,可显著缩短定位时间

0