Linux 下 Informix 无法连接 的原因很多,通常不是单一问题。下面按最常见原因 → 排查方法 → 解决办法给你一个系统性的清单,你可以逐条对照。
onstat -
On-Lineshared memory not initialized → 数据库没起来启动:
oninit
echo $INFORMIXSERVER
必须和 onconfig 里的 INFORMIXSERVER 一致。
netstat -an | grep 9088
# 或你配置的端口
查看:
cat $INFORMIXDIR/etc/sqlhosts
示例:
ol_informix dbservername ontlitcp hostname 9088
常见错误:
ontlitcp / onsoctcp)测试端口:
telnet localhost 9088
或
nc -vz localhost 9088
解决:
systemctl stop firewalld
# 或开放端口
firewall-cmd --add-port=9088/tcp --permanent
SELinux:
setenforce 0
Informix 默认只允许:
informix 用户DBA 授权用户检查:
id
连接时指定用户:
dbaccess - -
CONNECT TO 'ol_informix@hostname' USER 'informix';
必须包含:
export INFORMIXDIR=/opt/informix
export INFORMIXSERVER=ol_informix
export PATH=$INFORMIXDIR/bin:$PATH
export ONCONFIG=onconfig.ol_informix
onconfig 中:
NETTYPE=ontlitcp,1,50,CPU
并且 sqlhosts 里主机名要能被解析。
检查:
hostname
cat /etc/hosts
查看版本:
dbaccess -V
连接失败时通常会给:
SQL Error (-908): Unable to connect
或
-25507 / -329 / -951
常见错误含义:
| 错误码 | 含义 |
|---|---|
| -908 | 网络或 sqlhosts 问题 |
| -25507 | 服务未启动 |
| -951 | 用户无权限 |
| -329 | 找不到数据库 |
你可以直接贴出以下信息(越全越好):
sqlhosts 内容onstat - 输出我可以直接告诉你是哪一条导致的,以及怎么改。