在 Ubuntu 上排错 IBM Informix,通常可以从 服务状态、日志、环境变量、权限、端口、SQL 错误 几个方面入手。下面给你一套比较系统的排查思路和常用命令。
onstat -
IBM Informix Dynamic Server Version ...
On-Line
shared memory not initialized → 数据库没启动Cannot connect to server → 环境变量或实例名不对oninit -vy # 启动
onmode -ky # 停止
Informix 非常依赖环境变量。
echo $INFORMIXDIR
echo $INFORMIXSERVER
echo $ONCONFIG
echo $PATH
export INFORMIXDIR=/opt/ibm/informix
export INFORMIXSERVER=ol_informix
export ONCONFIG=onconfig.ol_informix
export PATH=$INFORMIXDIR/bin:$PATH
export LD_LIBRARY_PATH=$INFORMIXDIR/lib:$INFORMIXDIR/lib/esql
⚠️ Ubuntu 常见错误:
INFORMIXDIR不对LD_LIBRARY_PATH没设,导致onstat: command not found或库缺失
cd $INFORMIXDIR/tmp
ls -l *.log
或:
onstat -m
在 onconfig 中查看:
grep MSGPATH $INFORMIXDIR/etc/$ONCONFIG
一般路径:
/opt/ibm/informix/tmp/ol_informix.log
Cannot open chunk → 权限或路径问题Listen failed → 端口被占用Out of memory → 内核参数不足grep -i sqlhosts $INFORMIXDIR/etc/sqlhosts
示例:
ol_informix onsoctcp 127.0.0.1 9088
telnet 127.0.0.1 9088
# 或
nc -zv 127.0.0.1 9088
sudo ufw status
Informix 必须用 informix 用户运行
id informix
检查目录权限:
ls -ld $INFORMIXDIR
ls -l $INFORMIXDIR/tmp
修复示例:
chown -R informix:informix /opt/ibm/informix
-908:连接失败(server/port/sqlhosts)-329:找不到数据库-206:表不存在-1215:锁冲突查看详细说明:
finderr 908
Informix 需要共享内存:
sysctl -a | grep shm
必要时修改:
sudo vim /etc/sysctl.conf
kernel.shmmax = 2147483648
kernel.shmall = 524288
sudo sysctl -p
✅ informix 用户存在
✅ INFORMIXDIR 正确
✅ oninit 成功
✅ onstat - 显示 On-Line
✅ sqlhosts 配置正确
✅ 端口可通
✅ 日志无 FATAL 错误
如果你愿意,可以把 具体报错信息(命令 + 报错内容)发出来,我可以直接帮你定位是哪一类问题。