温馨提示×

Ubuntu下Informix如何排错

小樊
34
2026-08-28 03:51:11
栏目: 智能运维

在 Ubuntu 下对 IBM Informix 进行排错,通常需要从 日志、系统资源、配置、权限、网络、SQL 本身 等多个层面入手。下面给你一套常用、实用的排错思路(偏运维向,适合现场快速定位问题)。


一、确认 Informix 是否在运行

1️⃣ 查看进程

ps -ef | grep oninit

正常至少应看到:

informix   ... oninit
informix   ... oninit -P

如果看不到:

onstat -

若返回:

shared memory not initialized

说明 实例未启动

2️⃣ 启动实例

oninit -vy
  • -v:显示过程
  • -y:自动确认

二、查看最重要的日志(排错首选)

1️⃣ 在线日志 online.log

cd $INFORMIXDIR
find . -name online.log

常见位置:

$INFORMIXDIR/tmp/online.log
$INFORMIXDIR/log/online.log

查看最近错误:

tail -n 200 online.log

常见错误示例

错误 说明
Could not open log file 路径/权限错误
No free disk space 磁盘满
Assertion Failure 严重错误,可能数据损坏
shared memory 实例未启动或版本不匹配
Cannot open chunk 数据空间文件权限/路径错误

三、onstat 系列命令(实时状态)

1️⃣ 基础状态

onstat -

正常:

IBM Informix Dynamic Server Version ...
Status: On-Line

2️⃣ 查看错误码

onstat -m

等价于 online.log 最近内容。

3️⃣ 查看表空间 / chunk

onstat -d
  • flags = Offline / Recovery → 磁盘异常
  • chunk 路径不存在 → 启动失败

四、SQL / 应用层错误

1️⃣ 查看 SQL 错误码

Informix 错误码格式:

-244   Could not do a physical order read
-951   User not found
-329   Database not found

查看含义:

finderr 244

或:

finderr -244

2️⃣ 打开 SQL 跟踪(高级)

SET EXPLAIN ON;

生成执行计划,排查慢 SQL。


五、权限与用户问题(Ubuntu 常见)

1️⃣ Informix 用户

确认:

id informix

Ubuntu 可能缺少:

sudo useradd -r -m informix

2️⃣ 文件权限

chown -R informix:informix $INFORMIXDIR
chmod 755 $INFORMIXDIR

✅ chunk / data 文件权限:

chmod 660 dbspace_file

六、端口与网络问题

1️⃣ 确认端口监听

netstat -tulnp | grep 1526

或:

ss -lntp

2️⃣ sqlhosts 配置

cat $INFORMIXDIR/etc/sqlhosts

示例:

demo_on onsoctcp 127.0.0.1 1526

检查:

  • IP 是否可达
  • 端口是否被防火墙拦截

七、系统资源问题

1️⃣ 磁盘空间

df -h

2️⃣ 内存

free -h

Informix 依赖共享内存,内存不足会导致启动失败


八、环境变量(非常常见)

确认:

env | grep INFORMIX

至少应有:

INFORMIXDIR=/opt/informix
INFORMIXSERVER=demo_on
PATH=$INFORMIXDIR/bin:$PATH

建议写入:

~informix/.bashrc

九、常见故障速查表

现象 排查点
oninit 失败 online.log
连接失败 sqlhosts / 端口 / 用户
SQL 报错 finderr
表打不开 onstat -d
磁盘满 df -h
权限拒绝 informix 用户/文件权限
实例频繁宕机 online.log + Assertion Failure

十、如果你愿意,我可以帮你进一步定位

你可以直接贴出:

  1. oninit -vy 输出
  2. online.log 报错片段
  3. SQL 错误码(如 -244
  4. onstat - 状态

我可以 逐行帮你分析,甚至给你 修复命令

0