同一VM中Informix服务器与Client SDK共存的命令执行报错问题
Informix Server与Connection Manager同VM安装的环境变量冲突问题解决
问题原因
Informix的服务器端工具(如onstat)和Connection Manager工具(如oncmsm)都依赖INFORMIXDIR环境变量定位配置、消息文件等核心资源,但Server和Client SDK(CSDK)的工具对该变量的依赖路径绑定各自安装目录:
- 当
INFORMIXDIR设为Server目录/opt/ibm/informix时,CSDK的oncmsm会尝试从该目录加载消息文件,但CSDK的消息文件实际在/opt/ibm/csdk/msg下,导致加载失败;从测试的msgfile输出也能看到,CSDK版本的msgfile此时返回空路径,直接触发报错。 - 当
INFORMIXDIR切换为CSDK目录/opt/ibm/csdk时,Server的onstat找不到Server目录下的资源,甚至会默认去/usr/informix查找,引发路径错误。
解决方法
1. 临时切换环境运行对应工具
根据要执行的工具类型,手动设置正确的环境变量:
- 运行服务器端工具(如
onstat):export INFORMIXDIR=/opt/ibm/informix export PATH=/opt/ibm/informix/bin:$PATH onstat - - 运行Connection Manager工具(如
oncmsm):export INFORMIXDIR=/opt/ibm/csdk export PATH=/opt/ibm/csdk/bin:$PATH oncmsm -h
2. 编写环境切换脚本(推荐)
为两种环境分别编写脚本,方便快速切换:
- 创建Server环境脚本
set_informix_server.sh:#!/bin/bash export INFORMIXDIR=/opt/ibm/informix export PATH=/opt/ibm/informix/bin:$PATH # 按需添加ONCONFIG、INFORMIXSQLHOSTS等其他服务器端环境变量 - 创建CSDK/Connection Manager环境脚本
set_informix_csdk.sh:#!/bin/bash export INFORMIXDIR=/opt/ibm/csdk export PATH=/opt/ibm/csdk/bin:$PATH
使用时执行source set_informix_server.sh或source set_informix_csdk.sh即可快速切换到对应环境。
3. 权限验证
确保informix用户对/opt/ibm/informix和/opt/ibm/csdk两个目录及下属文件拥有完整的读写执行权限,避免因权限不足导致资源加载失败。
内容的提问来源于stack exchange,提问作者Ondřej Žižka
相关产品推荐
相关产品推荐

