Linux环境下Informix数据库迁移技巧
informix用户及informixgrp组,确保用户对安装目录(如/opt/IBM/informix)有读写权限。ontape(快速全库备份,适合大规模数据):ontape -s -L 0 -f /backup/source_db.bak;逻辑备份用dbexport(生成跨平台文本文件,适合结构迁移):dbexport -d source_db -o /backup/source_db_export。同时备份配置文件(onconfig)、日志文件(online.log)及存储脚本。onstat -确认目标实例状态正常后,创建同名数据库并配置表空间(系统表空间rootdbs、临时表空间tempdbs、用户表空间userdbs)。例如:oninit -ivy # 初始化实例(若未启动)
onspaces -c -d rootdbs -p /informix/rootdbs -o 0 -s 2000000 # 创建系统表空间(2GB)
onspaces -c -d userdbs -p /informix/userdbs -o 0 -s 10000000 # 创建用户表空间(10GB)
create database source_db with log on 'rootdbs' extent size 16 next size 16 lock mode row;
注意:表空间文件路径需提前创建,权限设为660(属主informix、属组informixgrp)。dbschema导出源数据库的表、索引、触发器、视图等结构(排除存储过程可加-ss参数):dbschema -d source_db -ss > source_db_schema.sql。将SQL文件传输至目标服务器,用dbaccess导入:dbaccess source_db < /tmp/source_db_schema.sql。导入后检查表结构(如数据类型、约束)是否符合目标环境要求(如CHAR长度、DECIMAL精度)。dbexport/dbimport组合——dbexport导出源数据到*.unl文本文件(位于source_db_export目录),通过scp传输至目标服务器;再用dbimport导入:dbimport -d new_dbname -i /path/to/export_dir。此方法操作简单,支持跨平台。unload/load工具按表导出/导入——通过dbaccess生成unload脚本(导出所有用户表数据):select 'unload to "/backup/source_db_data/' || tabname || '.unl" select * from ' || tabname || ';'
from systables where tabtype = 'T' and owner = 'informix';
执行脚本生成.unl文件,传输至目标服务器后,用load工具导入(生成load脚本):select 'load from "/backup/source_db_data/' || tabname || '.unl" insert into ' || tabname || ';'
from systables where tabtype = 'T' and owner = 'informix';
若导入时出现“长事务”错误,可调整onconfig中的LOGSIZE参数(增大逻辑日志大小)或使用dbimport -l buffered(无日志模式)。9088)、数据库名及认证信息。例如:jdbc:informix-sqli://old_server:9088/source_db:INFORMIXSERVER=ol_informix1410;user=informix;password=xxx;jdbc:informix-sqli://new_centos_ip:9088/source_db:INFORMIXSERVER=new_informix1410;user=informix;password=xxx。DECODE(a,b,c,d) → CASE WHEN a=b THEN c ELSE d END;CURRENT YEAR TO DAY → CURRENT DATE;VARCHAR(n) → CHAR(n)(若目标数据库不支持可变长字符类型)。SELECT COUNT(*) FROM table_name)、关键字段值(如主键、唯一索引字段),确保数据无遗漏或错误;用dbvalid工具验证数据库完整性:dbvalid -d source_db(检查表结构与数据一致性)。time命令统计SQL执行耗时,对比迁移前后的响应时间;检查目标数据库性能指标(onstat -b查看缓冲池命中率、onstat -k查看锁等待),若有瓶颈可调整参数(如增大BUFFERPOOL大小、调整LOCKMODE超时时间)。onstat、onperf)实时监控数据库状态(CPU使用率、内存占用、磁盘I/O);定期执行UPDATE STATISTICS命令更新统计信息,优化查询计划。ontape(物理备份)或dbexport(逻辑备份)执行备份,并将备份文件存储至异地(如NAS、云存储),确保数据安全。