在 Ubuntu 下迁移 Informix 数据库,通常可以分为 同版本迁移、跨版本迁移、跨平台迁移(如 AIX→Ubuntu) 几种情况。下面给你一套实用、可落地的迁移方案,按常见场景说明。
# Ubuntu 版本
lsb_release -a
# Informix 版本
onstat -V
确保:
# 示例
INFORMIXDIR=/opt/ibm/informix
INFORMIXSERVER=ifxserver
oninit -ivy
dbexport dbname -ss
生成:
dbname.exp/ 目录dbname.sqlscp -r dbname.exp user@ubuntu:/tmp/
dbimport dbname -i /tmp
✅ 优点:
⚠ 注意:
适合整实例迁移
ontape -s -L 0
$INFORMIXDIR/backups/
ontape -r
✅ 优点:
⚠ 限制:
适合部分表迁移
unload to '/tmp/t1.unl'
select * from t1;
load from '/tmp/t1.unl'
insert into t1;
或:
dbload -d dbname -c load.ctl
CREATE EXTERNAL TABLE ext_t1
LIKE t1
USING (
DATAFILES ("DISK:/tmp/t1.unl")
);
INSERT INTO t1 SELECT * FROM ext_t1;
| 项目 | 说明 |
|---|---|
| 字节序 | 通常无需处理 |
| PAGE SIZE | 必须一致 |
| 字符集 | 必须一致 |
| 存储过程 | 需重新编译 |
| 触发器 | 需检查 |
| 用户权限 | 需重建 |
# 检查实例
onstat -
# 检查数据库
dbaccess dbname -
# 数据校验
SELECT COUNT(*) FROM tab;
| 场景 | 推荐 |
|---|---|
| 同版本整库 | ontape |
| 跨平台 | dbexport |
| 单表 | unload/load |
| 大数据量 | External Table |
如果你能告诉我:
我可以直接给你一条可执行的迁移命令脚本。