在 Ubuntu 下使用 IBM Informix 时,排错通常可以从日志、环境变量、实例状态、权限、配置几个方面入手。下面给你一套比较系统的排错思路和常用命令。
onstat -
IBM Informix Dynamic Server Version ...
On-Line
shared memory not initialized:实例没启动oninit
onmode -ky
cd $INFORMIXDIR/tmp
ls -l *.log
或:
onstat -m
常见日志路径:
$INFORMIXDIR/tmp/<instance>.log
例如:
Cannot open chunk '/data/dbs/datadbs01' (Permission denied)
→ 文件系统权限问题
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
检查:
env | grep INFORMIX
⚠️ Ubuntu 常见错误:
LD_LIBRARY_PATH 没设 → oninit: error while loading shared librariessudo 但没带环境变量$INFORMIXDIR/etc/$ONCONFIG
ROOTPATH:root dbspace 路径是否存在DBSERVERNAME:是否和 INFORMIXSERVER 一致TAPEDEV:备份设备MSGPATH:日志路径id informix
ls -l /data/dbs/
应为:
informix:informix
修复示例:
chown informix:informix /data/dbs/*
chmod 660 /data/dbs/*
SQL1037C / Cannot allocate shared memorySHMVIRTSIZE 太小kernel.shmmax 太小查看:
sysctl kernel.shmmax
修改:
sudo sysctl -w kernel.shmmax=2147483648
Connection refusedonstat -g sql
onstat -g ses
检查:
sqlhostsnetstat -tunlp | grep informix
常见原因:
libaio解决:
sudo apt install libaio1
onstat -$INFORMIXDIR/tmp/*.logonconfig如果你愿意,可以把具体报错信息或 onstat -、oninit 的输出贴出来,我可以帮你精准定位。