使用onstat -(显示版本信息)或dbaccess sysadmin -(进入sysadmin模式后执行SELECT DBINFO('version');)命令,确认当前Informix数据库的版本号(如12.10.xC5),明确需升级的目标版本(如12.10.xC6或14.10.FC1)。
升级前必须执行完整备份,避免数据丢失。常用命令:
ontape -c -d /path/to/backup(指定备份目录,如/opt/informix/backup);dbexport dbname(导出指定数据库,如dbexport stores);ontape -c -L 0(Level 0增量备份)。/opt/IBM/informix占用10GB,则需预留20GB以上);内存满足新版本最低要求(如12.10版本需至少4GB内存);libstdc++、glibc),使用sudo apt update && sudo apt upgrade -y安装最新版本。根据数据库大小(如1TB数据)和系统性能(如SSD磁盘写入速度),估算升级耗时(通常为1-4小时),选择业务低峰期(如周末凌晨2-6点)进行升级,并提前通知相关人员。
访问IBM官方网站(ibm.com/informix),登录账户后进入“Downloads”页面,选择对应Debian版本的安装包(通常为.deb格式,如informix-server-12.10.xC6-debian11.x86_64.deb),下载至服务器本地目录(如/tmp)。
升级前必须停止所有Informix进程,避免数据损坏。执行以下命令:
onmode -ky # 强制停止Informix服务
ps -ef | grep informix # 确认无残留进程(若有,用kill -9 PID终止)
使用dpkg命令安装下载的.deb包:
sudo dpkg -i /tmp/informix-server-12.10.xC6-debian11.x86_64.deb
若安装过程中提示依赖缺失,执行sudo apt --fix-broken install自动修复依赖关系。
备份旧版本配置文件(如onconfig、sqlhosts),并将新版本配置文件复制到指定目录:
cp $INFORMIXDIR/etc/onconfig $INFORMIXDIR/etc/onconfig.old # 备份onconfig
cp $INFORMIXDIR/etc/sqlhosts $INFORMIXDIR/etc/sqlhosts.old # 备份sqlhosts
cp /opt/IBM/informix/etc/onconfig.new $INFORMIXDIR/etc/onconfig # 复制新onconfig
cp /opt/IBM/informix/etc/sqlhosts.new $INFORMIXDIR/etc/sqlhosts # 复制新sqlhosts
根据新版本要求修改配置文件(如调整BUFFERPOOL大小、LOGSIZE参数)。
根据升级类型选择对应命令:
onupgrade工具,自动处理数据结构迁移;onupgrade -k # -k参数保留旧版本数据文件,避免重新初始化
oninit -i,仅更新系统表和功能模块;oninit -i
升级完成后,检查版本信息和数据库状态:
onstat -k all # 查看版本号(如“Version 12.10.xC6”)
dbaccess sysadmin - # 进入sysadmin模式,执行SELECT DBINFO('version');确认版本
若输出显示目标版本号,则升级成功。
连接应用程序至新版本Informix,执行核心业务流程(如订单创建、报表生成),验证功能正常性和性能(如查询响应时间、并发处理能力)。
收集最新统计信息,优化查询计划:
UPDATE STATISTICS HIGH; -- 更新所有表的统计信息(高精度)
使用onstat命令监控系统状态(如缓冲池命中率、锁等待数):
onstat -b # 缓冲池统计
onstat -k # 锁信息
onstat -g seg # 存储段使用情况
持续观察24-48小时,确保无性能异常。
若升级后无法启动Informix,可能是残留共享内存导致。执行以下命令清理:
ipcs -ma | grep informix # 查找残留共享内存段
ipcrm -m <shmid> # 删除残留共享内存(替换<shmid>为实际ID)
若新版本onconfig文件报错,对比新旧版本模板(位于$INFORMIXDIR/etc),手动合并必要参数(如ROOTPATH、MIRRORPATH)。
若出现字符集错误(如中文乱码),设置环境变量:
export DB_LOCALE=en_US.utf8 # 数据库字符集
export CLIENT_LOCALE=en_US.utf8 # 客户端字符集
或在onconfig文件中添加DB_LOCALE=en_US.utf8。