温馨提示×

Ubuntu Informix如何排错

小樊
39
2026-07-18 03:14:34
栏目: 智能运维

Ubuntu 上运行 Informix 进行排错时,通常可以从 日志、进程、配置、权限、端口、系统资源 等几个方向入手。下面给你一套比较完整的排错思路(从常见到进阶)。


一、确认 Informix 是否正常启动

1️⃣ 查看 Informix 进程

ps -ef | grep oninit

正常应看到多个 oninit 进程。
如果 没有 oninit 进程,说明实例未启动。

启动实例:

oninit -v

强制启动(仅用于异常恢复):

oninit -ivy

2️⃣ 查看 Informix 状态

onstat -

常见状态:

  • On-Line
  • Quiescent(只读)
  • Shutdown(正在关闭)

如果报错如:

shared memory not initialized

说明数据库没启动或环境变量不对。


二、检查环境变量(最常见问题)

1️⃣ 必须的环境变量

export INFORMIXDIR=/opt/informix
export INFORMIXSERVER=ol_informix
export ONCONFIG=onconfig.ol_informix
export PATH=$INFORMIXDIR/bin:$PATH

检查是否生效:

env | grep INFORMIX

⚠️ Ubuntu 常见问题

  • bash 却写在 .profile
  • sudo 导致环境变量丢失(sudo 会重置环境)

建议写到:

~/.bashrc

或:

/etc/profile.d/informix.sh

三、查看 Informix 日志(最核心)

1️⃣ 在线日志(Online Log)

cd $INFORMIXDIR/tmp

或查看:

onstat -m

常见错误关键词:

  • Cannot open chunk
  • Permission denied
  • semaphore error
  • Shared memory error

2️⃣ 消息日志路径

onstat -c | grep MSGPATH

例如:

MSGPATH /opt/informix/tmp/ol_informix.log

查看:

tail -f /opt/informix/tmp/ol_informix.log

四、常见错误及解决办法

❌ 1. 端口连不上

SQLCODE=-908

排查:

netstat -tunlp | grep 9088

检查 sqlhosts

cat $INFORMIXDIR/etc/sqlhosts

示例:

ol_informix onsoctcp 127.0.0.1 9088

Ubuntu 注意:

  • 防火墙
  • 监听地址是否正确

❌ 2. 权限问题

Permission denied

检查:

ls -ld $INFORMIXDIR
whoami

建议:

  • Informix 文件、chunk 文件属于 informix:informix
chown -R informix:informix /opt/informix

❌ 3. 共享内存 / 信号量问题

shared memory segment not found

检查系统限制:

ipcs -m
ipcs -s

清理残留(⚠️ 谨慎):

ipcrm -m <shmid>

❌ 4. Ubuntu 系统限制

查看:

ulimit -a

建议至少:

ulimit -n 65536
ulimit -u 4096

写入:

/etc/security/limits.conf

五、客户端连接排错

1️⃣ 本地连接测试

dbaccess

2️⃣ 远程连接

isql -U user -P password -S ol_informix

常见问题:

  • sqlhosts 不一致
  • 端口未开放
  • 用户名/密码错误

六、配置检查

1️⃣ 检查配置文件

onstat -c

重点检查:

  • ROOTPATH
  • DBSPACETEMP
  • MSGPATH
  • SERVERNUM

七、Ubuntu 特有注意事项

✅ 安装依赖:

sudo apt install libaio1 libncurses5

✅ systemd 启动(可选): Informix 官方不提供 systemd 脚本,需自行写。

✅ 不要混用 rootinformix 用户启动


八、排错速查表(推荐)

现象 检查点
启动失败 oninit -v + 日志
连不上 sqlhosts / 端口
权限错误 chunk 文件权限
共享内存错误 ipcs / ulimit
客户端失败 INFORMIXSERVER

如果你愿意,可以把 具体错误日志或报错信息贴出来(例如 oninit -v 的输出或 onstat -m 内容),我可以直接帮你定位问题。

0