Informix 数据库的数据恢复,取决于你有没有备份、数据库日志模式、以及损坏的类型。下面按最常见场景给你一个完整、可操作的恢复思路(适用于 Linux 上的 IBM Informix)。
先确认以下 4 点(非常重要):
SELECT name, logmode FROM sysdatabases;
常见模式:
U:Unbuffered LoggingB:Buffered LoggingN:No Logging(最麻烦)A:ANSIontape 备份?onbar 备份?onstat -
ontape -r
过程:
✅ 恢复完成后:
onmode -m # 进入多用户模式
ontape -r -D dbname
⚠️ 注意:
onbar -r
恢复单个数据库:
onbar -r -D dbname
恢复时间点(PITR):
onbar -r -t "2025-01-01 10:00:00"
✅ 如果表在 N 日志模式之外,基本无法恢复
可尝试:
systables / syscolumns 恢复表结构✅ 如果 事务未提交:
ROLLBACK WORK;
✅ 如果已提交,但 有逻辑日志:
onlog 分析日志⚠️ 不建议手工解析逻辑日志,风险极高
$INFORMIXDIR/tmp/online.log
chown informix:informix *
chmod 660 *
onmode -ky
oninit -iy # ⚠️ 会清空数据
适用于:
恢复步骤:
onmode -ky
cp -a backup/* $INFORMIXDIR/
oninit
⚠️ 要求:
✅ 最安全
ontape / onbar 备份 → 恢复
⚠️ 次选
冷备 + 日志
❌ 最危险
无备份 + 无日志
| 错误 | 原因 | 解决 |
|---|---|---|
No backup found |
备份路径错误 | 检查 TAPEDEV |
Log full |
逻辑日志未备份 | onbar -b -l |
Chunk missing |
chunk 损坏 | 从备份恢复 |
Cannot open chunk |
权限问题 | chown informix |
你可以直接告诉我:
onstat -V)我可以给你精确到命令级别的恢复方案,甚至帮你判断数据是否还能救回来。