温馨提示×

ubuntu下informix怎样迁移

小樊
49
2026-10-17 00:08:03
栏目: 智能运维

在 Ubuntu 下迁移 Informix 数据库,通常可以分为 同版本迁移、跨版本迁移、跨平台迁移(如 AIX→Ubuntu) 几种情况。下面给你一套实用、可落地的迁移方案,按常见场景说明。


一、迁移前准备(非常重要)

1. 确认环境

# Ubuntu 版本
lsb_release -a

# Informix 版本
onstat -V

确保:

  • Ubuntu 上已安装 兼容的 Informix 版本
  • 字符集(DB_LOCALE / CLIENT_LOCALE)一致
  • 页大小(PAGE SIZE)一致(如 2K / 4K)

2. 创建目标实例

# 示例
INFORMIXDIR=/opt/ibm/informix
INFORMIXSERVER=ifxserver
oninit -ivy

二、常用迁移方式(推荐)


✅ 方式一:dbexport / dbimport(最常用)

源库(旧服务器)

dbexport dbname -ss

生成:

  • dbname.exp/ 目录
  • dbname.sql

拷贝到 Ubuntu

scp -r dbname.exp user@ubuntu:/tmp/

目标库(Ubuntu)

dbimport dbname -i /tmp

✅ 优点:

  • 简单可靠
  • 跨平台支持好

⚠ 注意:

  • 表结构、数据、索引都会迁移
  • 权限需手动处理(GRANT)

✅ 方式二:ontape + onrestore(整库迁移)

适合整实例迁移

源库备份

ontape -s -L 0

拷贝备份文件

$INFORMIXDIR/backups/

Ubuntu 恢复

ontape -r

✅ 优点:

  • 元数据、用户、配置全保留

⚠ 限制:

  • Informix 版本必须一致
  • PAGE SIZE 必须一致

✅ 方式 三:unload / load(表级迁移)

适合部分表迁移

导出

unload to '/tmp/t1.unl'
select * from t1;

导入

load from '/tmp/t1.unl'
insert into t1;

或:

dbload -d dbname -c load.ctl

✅ 方式四:外部表(External Table,推荐新系统)

CREATE EXTERNAL TABLE ext_t1
LIKE t1
USING (
  DATAFILES ("DISK:/tmp/t1.unl")
);

INSERT INTO t1 SELECT * FROM ext_t1;

三、跨平台迁移注意事项(AIX → Ubuntu)

项目 说明
字节序 通常无需处理
PAGE SIZE 必须一致
字符集 必须一致
存储过程 需重新编译
触发器 需检查
用户权限 需重建

四、迁移后检查

# 检查实例
onstat -

# 检查数据库
dbaccess dbname -

# 数据校验
SELECT COUNT(*) FROM tab;

五、推荐方案总结

场景 推荐
同版本整库 ontape
跨平台 dbexport
单表 unload/load
大数据量 External Table

如果你能告诉我:

  • 源系统(AIX / Linux / Windows?)
  • Informix 版本
  • 数据量大小
  • 是否整库迁移

我可以直接给你一条可执行的迁移命令脚本。

0 踩