/opt/IBM/informix/log目录(如server.log、startup.log)。使用tail -f命令实时监控最新日志,快速定位错误关键词(如“ERROR”“FAILED”)。tail -f /var/log/messages或journalctl -xe查看CentOS系统日志,排查系统级问题(如磁盘空间不足、内存耗尽、网络中断),这些问题可能间接导致Informix故障。informix)的.bash_profile文件中设置了正确的环境变量(INFORMIXDIR、ONCONFIG、PATH)。执行source /home/informix/.bash_profile使设置生效,避免因路径错误导致命令无法执行。onconfig.dat(路径由ONCONFIG环境变量指定)中的参数需符合系统资源情况,重点检查:
BUFFERPOOL、LOCKS、LOGSIZE(需预留足够内存);ROOTPATH(根数据库空间路径)、MIRRORPATH(镜像路径,若有)是否存在且可写;SQLHOSTS文件中的端口号(默认1526)是否正确,是否与防火墙规则冲突。错误-113:没有当前记录
原因:尝试访问未执行查询或查询未返回结果的表的当前记录。
解决:确保执行了有效的SELECT查询生成当前记录集,避免在未查询的情况下使用CURRENT关键字。
错误-116:不能分配内存
原因:系统物理内存或Informix缓冲池配置不足,无法满足操作需求。
解决:
free -m检查系统剩余内存,关闭不必要的进程释放内存;onconfig.dat中的BUFFERPOOL参数(如增大BUFFERS数量),但需确保不超过系统可用内存。错误-122:在没有事务处理的数据库中出现BEGIN WORK
原因:在未启用事务的数据库(如MODE ANSI未设置)中执行BEGIN WORK语句。
解决:
CREATE DATABASE时指定WITH LOG);BEGIN WORK、COMMIT WORK/ROLLBACK WORK成对出现,且在事务边界内。错误-124:没有可分配内存
原因:数据库管理的内存转换区(MTA)空间不足,无法处理并发操作。
解决:
onstat -g seg输出,查看MTA段的使用情况;onconfig.dat中的MTA相关参数(如MTABLOCKS),增加内存分配。错误-204:指定的表名不在数据库中
原因:表名拼写错误、表未创建或不在当前数据库中。
解决:
DATABASE语句切换到正确的数据库;SELECT * FROM systables WHERE tabname='表名'确认表是否存在;错误-209:不兼容的数据格式
原因:使用新版本Informix客户端访问旧版本数据库,或反之。
解决:
dbupdate工具升级数据库格式(适用于跨版本升级);长事务问题
现象:数据库日志中出现“Aborting Long Transaction”提示,事务长时间未提交,导致锁等待或回滚。
排查步骤:
onstat -x -r 10监控长事务回滚进度(每10秒刷新一次);onstat -ugrep (userthread)查找长事务的会话ID,再用onstat -g ses <session_id>查看会话执行的SQL;onparams -a -d dbspace -s size)。逻辑日志满
现象:数据库停止响应,onstat -l显示所有逻辑日志的flags为U------(未备份)。
解决:
ontape -s或第三方备份工具);quiescent模式):onparams -a -d dbspace -s 100000(增加100000页,约80MB)。锁冲突
现象:应用程序报错“Could not position within a table”(-243)或“Could not do a physical-order read”(-244),事务长时间等待锁。
排查步骤:
onstat -kgrep partnum(partnum来自systables)查找锁定的表;onstat -ugrep address获取锁拥有者的会话ID,再用onstat -g ses <session_id>查看会话详情;COMMITTED READ改为CURSOR STABILITY,减少锁持有时间);DS_TOTAL_TIMEOUT参数,默认120秒)。Chunk I/O失败
现象:onstat -d显示chunk的status为down,无法访问对应的数据文件;数据库日志中出现“I/O error”提示。
解决:
ls -l /dev/chunk_device);chown informix:informix /dev/chunk_device,确保Informix用户可访问);dd if=/dev/chunk_device of=/dev/null bs=1024 count=100测试设备是否能正常读取;安装错误:“could not load wizard specified in /wizard.inf”
原因:Java环境未正确配置或版本不兼容。
解决:
which java),安装时指定javahome参数:./ids_install -javahome /usr/bin/java;安装错误:“缺少libm.so.6、libc.so.6”
原因:缺少32位兼容库(Informix部分组件需32位库支持)。
解决:使用yum安装缺失的库:
yum install glibc glibc.i686 glibc-devel.i686 glibc-static.i686 -y
yum install ncurses ncurses-devel.i686 ncurses-lib.i686 -y