温馨提示×

ubuntu如何迁移informix库

小樊
43
2026-10-11 05:08:42
栏目: 智能运维

在 Ubuntu 上迁移 IBM Informix 数据库,通常分为同版本迁移、跨版本迁移、跨平台迁移几种情况。下面按最常见、最稳妥的方式给你一个完整思路和操作步骤。


一、迁移前准备

1. 确认环境

onstat -

确认源库和目标库:

  • Informix 版本(onstat -V)
  • 操作系统(Ubuntu 版本)
  • 字符集(onstat -g cfg | grep DBUPSPACE 或 DB_LOCALE)

2. 安装 Informix(目标机)

在 Ubuntu 上安装同版本或更高版本的 Informix:

  • 创建 informix 用户
  • 设置环境变量:
export INFORMIXDIR=/opt/ibm/informix
export INFORMIXSERVER=ol_informix
export PATH=$INFORMIXDIR/bin:$PATH
export ONCONFIG=onconfig.ol_informix

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

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

1. 在源库导出

dbexport dbname -c -ss

生成:

  • dbname.exp 目录
  • dbname.sql

2. 拷贝到目标 Ubuntu

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

3. 在目标库导入

dbimport dbname -i /data -d datadbs

参数说明:

  • -i 导出目录
  • -d 指定数据库空间

✅ 优点:简单、跨平台兼容好
❌ 缺点:大库较慢


✅ 方式二:ontape 备份恢复(同版本推荐)

源库

ontape -s -L 0

目标库

ontape -r

恢复时需保证:

  • ONCONFIG 一致
  • 数据库空间结构一致

✅ 优点:快、完整
❌ 缺点:版本/平台要求严格


✅ 方式三:onunload / onload(表级)

onunload -t /tmp/tab.unl dbname:tabname
onload -t /tmp/tab.unl dbname:tabname

适合单表迁移。


✅ 方式四:SQL 导出(跨库通用)

dbaccess dbname - <<EOF
unload to '/tmp/tab.unl'
select * from tabname;
EOF

导入:

load from '/tmp/tab.unl'
insert into tabname;

三、Ubuntu 特有问题

1. 依赖库

sudo apt install libaio1 libpam0g

2. 内核参数

sysctl -w kernel.shmmax=...
sysctl -w kernel.sem=...

3. 文件权限

chown -R informix:informix /data/dbname.exp

四、迁移后检查

onstat -
oncheck -cI dbname

校验:

  • 表数量
  • 数据行数
  • 索引

五、推荐方案总结

场景 推荐方式
跨平台 dbexport/dbimport
同版本 ontape
单表 unload/load
大库 ontape + 并行

如果你能告诉我:

  • Informix 版本
  • 数据量
  • 是否跨版本/跨平台

我可以给你精确命令模板。

0 踩