在 Linux 环境下迁移 Informix 数据,常见做法取决于 数据量大小、停机窗口、是否跨版本/跨平台。下面按最常用 → 高级方案给你一个完整梳理。
onstat -V
onstat -d
不同页大小(2K / 4K / 8K)不能直接物理恢复
echo $DB_LOCALE
echo $CLIENT_LOCALE
ontape -s -L 0
# 或
onbar -b -L 0
dbexport dbname -o /backup/exp
生成:
/backup/exp/dbname.exp
├── dbname.sql
├── tab1.unl
├── tab2.unl
scp -r /backup/exp user@newhost:/data/exp
dbimport dbname -i /data/exp
✅ 优点
❌ 缺点
ontape -s -L 0
scp -r /informix/backup newhost:/informix/backup
scp $INFORMIXDIR/etc/onconfig newhost:$INFORMIXDIR/etc/
ontape -r
✅ 优点
❌ 缺点
UNLOAD TO '/data/tab1.unl'
SELECT * FROM tab1;
LOAD FROM '/data/tab1.unl'
INSERT INTO tab1;
或
dbload -d dbname -c cmd.txt
✅ 优点
❌ 缺点
CREATE EXTERNAL TABLE ext_tab1
LIKE tab1
USING (
DATAFILES ("DISK:/data/tab1.unl"),
FORMAT "DELIMITED"
);
INSERT INTO tab1 SELECT * FROM ext_tab1;
✅ 优点
dbexport/dbimportupdate statistics;
✅ 只能用 逻辑迁移(dbexport / unload)
export DB_LOCALE=zh_CN.utf8
export CLIENT_LOCALE=zh_CN.utf8
onstat -d
| 场景 | 推荐方案 |
|---|---|
| 小库 | dbexport/dbimport |
| 大库 | ontape/onbar |
| 不停机 | unload/load |
| 跨版本 | dbexport |
| 表级迁移 | external table |
如果你愿意,可以告诉我:
我可以给你 一套精确迁移命令方案。