温馨提示×

如何解决ubuntu informix启动失败

小樊
36
2026-01-05 15:35:22
栏目: 智能运维

Ubuntu 上 Informix 启动失败的定位与修复步骤

一、快速定位

  • 切换到 informix 用户并检查实例状态:
    • 查看进程:ps -ef | grep informix
    • 查看引擎状态:onstat -(若返回 “shared memory not initialized”,说明引擎未起来)
  • 查看关键日志与输出:
    • 引擎日志:tail -n 200 $INFORMIXDIR/tmp/online.log
    • 系统日志:journalctl -xetail -n 200 /var/log/syslog
  • 校验环境变量(以实际安装路径为准,常见为 /opt/IBM/informix/opt/informix):
    • echo $INFORMIXDIR $ONCONFIG $INFORMIXSERVER $LD_LIBRARY_PATH
    • 典型正确设置示例:
      • INFORMIXDIR=/opt/IBM/informix
      • INFORMIXSERVER=informix
      • ONCONFIG=onconfig.informix
      • LD_LIBRARY_PATH=$INFORMIXDIR/lib:$LD_LIBRARY_PATH
      • PATH=$INFORMIXDIR/bin:$PATH
  • 检查网络与端口(确认 sqlhosts 配置的主机名可解析、端口未被占用):
    • cat $INFORMIXDIR/etc/sqlhosts
    • ss -lntp | grep <端口>netstat -lntp | grep <端口>
    • ping/nslookup 测试主机名解析
  • 资源与磁盘:
    • free -mdf -hiostat -x 1 检查内存、磁盘空间与 I/O 错误

二、常见错误与修复对照表

症状关键词 可能原因 快速修复
online.log 报 “Problem: the permissions 0777 include public write access” 目录/文件权限过宽(如 0777 chmod -R 755 $INFORMIXDIRchown -R informix:informix $INFORMIXDIR
“/opt/informix (path is not trusted)” 目录受信任属性或权限不当 确保目录属主为 informix:informix,权限 755,必要时检查挂载选项与 ACL
“directory /opt/informix/tmp is too secure (has mode 755, needs 770)” 临时目录权限不足 chmod 770 $INFORMIXDIR/tmp;确认属主为 informix:informix
“The number of file descriptors is limited by your shell” 或 “Fatal error in shared memory creation” 文件描述符/共享内存不足 当前会话:ulimit -n 65535;持久化:/etc/security/limits.conf 增加 * soft/hard nofile 65535,退出重登或重启
“Allocating and attaching to shared memory… FAILED” 内存不足、SHM 参数不当、段冲突或权限问题 释放内存/停占用进程;核对 onconfigSHMBASE/SHMVIRTSIZE/SHMADD;必要时调大系统共享内存参数并重启系统
“WARNING: server initialization failed or timed out.” 且 online.log 含 “Could not determine encryption mode from page zero.” IDS 12.10.xC6 在 Linux x86_64 上启用 ROOTOFFSET/MIRROROFFSET 后重启失败 升级到 12.10.FC6X5 及以上;或作为规避将 ROOTOFFSET=0MIRROROFFSET=0FULL_DISK_INIT=0 后执行 oninit -iy(会重建实例,数据丢失)
onmonitor 报 “Termcap entry too long … The type of your terminal is unknown” 终端定义缺失 informix 用户环境添加:INFORMIXDIRTERMINFO=$INFORMIXDIR/etc/typetabTERMCAP=$INFORMIXDIR/etc/termcap 并重新登录

三、按序执行的标准恢复流程

  1. 切换到 informix 用户并校验环境:su - informix,确认 INFORMIXDIR/ONCONFIG/INFORMIXSERVER/LD_LIBRARY_PATH 正确。

  2. 查看日志定位错误:tail -n 200 $INFORMIXDIR/tmp/online.logjournalctl -xe,优先处理日志中首个报错。

  3. 修正权限与属主(按需执行):

    • chown -R informix:informix $INFORMIXDIR
    • chmod -R 755 $INFORMIXDIR
    • chmod 770 $INFORMIXDIR/tmp
  4. 调整资源限制(持久化):

    • /etc/security/limits.conf 增加:
      • * soft nofile 65535
      • * hard nofile 65535
    • 执行 ulimit -n 65535 后重试启动
  5. 清理共享内存残留(若疑似段冲突):

    • ipcs -m | grep informix 查看共享内存段
    • ipcrm -m <shmid> 删除残留段(谨慎,确保无其他实例使用)
  6. 启动引擎并观察:

    • 快速初始化:oninit -ivy(会重建系统表,谨慎用于生产)
    • 正常启动:oninit -v
    • 启动后校验:onstat - 应显示引擎已 up
  7. 网络连通性验证:

    • dbaccess - 测试本地连接
    • telnet <host> <port>ss -lntp | grep <port> 验证监听端口可达

四、预防与后续

  • 权限基线化:安装后统一设置 $INFORMIXDIR 755、关键子目录(如 tmp770,属主 informix:informix,并纳入变更管控。

  • 资源与内核参数:为数据库实例预留充足内存与文件描述符;必要时调整系统共享内存参数并重启,避免多实例资源争用。

  • 变更风险控制:修改 ROOTOFFSET/MIRROROFFSET 等磁盘布局参数前先备份;如为 IDS 12.10.xC6,优先升级到 12.10.FC6X5+ 以避免已知重启缺陷。

  • 监控与备份:建立对 online.logsyslog、磁盘空间与连接数的监控;定期做 0 级备份,并验证可恢复性。

0