在 Ubuntu 上运行 Informix 进行排错时,通常可以从 日志、进程、配置、权限、端口、系统资源 等几个方向入手。下面给你一套比较完整的排错思路(从常见到进阶)。
ps -ef | grep oninit
正常应看到多个 oninit 进程。
如果 没有 oninit 进程,说明实例未启动。
启动实例:
oninit -v
强制启动(仅用于异常恢复):
oninit -ivy
onstat -
常见状态:
On-Line ✅Quiescent(只读)Shutdown(正在关闭)如果报错如:
shared memory not initialized
说明数据库没启动或环境变量不对。
export INFORMIXDIR=/opt/informix
export INFORMIXSERVER=ol_informix
export ONCONFIG=onconfig.ol_informix
export PATH=$INFORMIXDIR/bin:$PATH
检查是否生效:
env | grep INFORMIX
⚠️ Ubuntu 常见问题
bash 却写在 .profilesudo 导致环境变量丢失(sudo 会重置环境)建议写到:
~/.bashrc
或:
/etc/profile.d/informix.sh
cd $INFORMIXDIR/tmp
或查看:
onstat -m
常见错误关键词:
Cannot open chunkPermission deniedsemaphore errorShared memory erroronstat -c | grep MSGPATH
例如:
MSGPATH /opt/informix/tmp/ol_informix.log
查看:
tail -f /opt/informix/tmp/ol_informix.log
SQLCODE=-908
排查:
netstat -tunlp | grep 9088
检查 sqlhosts:
cat $INFORMIXDIR/etc/sqlhosts
示例:
ol_informix onsoctcp 127.0.0.1 9088
Ubuntu 注意:
Permission denied
检查:
ls -ld $INFORMIXDIR
whoami
建议:
informix:informixchown -R informix:informix /opt/informix
shared memory segment not found
检查系统限制:
ipcs -m
ipcs -s
清理残留(⚠️ 谨慎):
ipcrm -m <shmid>
查看:
ulimit -a
建议至少:
ulimit -n 65536
ulimit -u 4096
写入:
/etc/security/limits.conf
dbaccess
isql -U user -P password -S ol_informix
常见问题:
sqlhosts 不一致onstat -c
重点检查:
ROOTPATHDBSPACETEMPMSGPATHSERVERNUM✅ 安装依赖:
sudo apt install libaio1 libncurses5
✅ systemd 启动(可选): Informix 官方不提供 systemd 脚本,需自行写。
✅ 不要混用 root 和 informix 用户启动
| 现象 | 检查点 |
|---|---|
| 启动失败 | oninit -v + 日志 |
| 连不上 | sqlhosts / 端口 |
| 权限错误 | chunk 文件权限 |
| 共享内存错误 | ipcs / ulimit |
| 客户端失败 | INFORMIXSERVER |
如果你愿意,可以把 具体错误日志或报错信息贴出来(例如 oninit -v 的输出或 onstat -m 内容),我可以直接帮你定位问题。