目录
[二、完整恢复方案(数据泵 impdp)](#二、完整恢复方案(数据泵 impdp))
[步骤 1:恢复基础全量备份](#步骤 1:恢复基础全量备份)
[步骤 2:按时间顺序逐个恢复增量 dmp](#步骤 2:按时间顺序逐个恢复增量 dmp)
[三、累积增量 CUMULATIVE 模式](#三、累积增量 CUMULATIVE 模式)
[场景 1:数据库完全损坏,整库重建恢复](#场景 1:数据库完全损坏,整库重建恢复)
[场景 2:误删表 / 误操作,时间点恢复(expdp 增量不支持时间点闪回恢复)](#场景 2:误删表 / 误操作,时间点恢复(expdp 增量不支持时间点闪回恢复))
[五、传统 exp/imp 注意点(坑)](#五、传统 exp/imp 注意点(坑))
[七、对比 RMAN](#七、对比 RMAN)
重要说明:
- 传统 exp 工具本身不支持增量备份 ;只有 expdp(数据泵)支持增量备份(INCREMENTAL),dmp 文件做增量,只能用数据泵;普通 exp 只能每次全量导出。
- expdp 增量分为:全量 FULL、增量 INCREMENTAL(仅变化块)、累积增量 CUMULATIVE(自上次全量以来所有变化)。
- 备份顺序:第 1 次全量备份 dmp ,之后定期做增量备份 dmp 。恢复时必须先恢复全量,再按备份时间顺序依次恢复每一个增量 dmp,不能跳序、不能乱序。
一、备份逻辑回顾(expdp)
- 第 1 次:全量备份
bash
expdp user/pwd directory=DUMP_DIR dumpfile=full_01.dmp full=y logfile=full_01.log
-
后续每次增量备份(只导出变更数据)
expdp user/pwd directory=DUMP_DIR dumpfile=incr_02.dmp full=y INCREMENTAL=y logfile=incr_02.log
expdp user/pwd directory=DUMP_DIR dumpfile=incr_03.dmp full=y INCREMENTAL=y logfile=incr_03.log
关键点:增量 dmp不能独立恢复,依赖基础全量 dmp。
二、完整恢复方案(数据泵 impdp)
恢复原则
- 恢复顺序严格按照备份时间先后:全量 dmp → 最早增量 dmp → 次新增量 dmp → ... → 最新增量 dmp
- impdp 恢复增量时,同样使用
INCREMENTAL=y参数; - 目标库建议先清理旧用户 / 表,避免对象冲突;
- 如果是整库恢复,目标库最好是空库。
步骤 1:恢复基础全量备份
bash
impdp user/pwd directory=DUMP_DIR dumpfile=full_01.dmp full=y logfile=imp_full_01.log
此时恢复到第一次全量备份时刻状态,还没有后续增量变更。
步骤 2:按时间顺序逐个恢复增量 dmp
先恢复第一个增量备份:
bash
impdp user/pwd directory=DUMP_DIR dumpfile=incr_02.dmp full=y INCREMENTAL=y logfile=imp_incr_02.log
再恢复下一个更新的增量备份:
bash
impdp user/pwd directory=DUMP_DIR dumpfile=incr_03.dmp full=y INCREMENTAL=y logfile=imp_incr_03.log
⚠️不能直接恢复最新的 incr_03.dmp,跳过 incr_02,会造成数据丢失。
三、累积增量 CUMULATIVE 模式
-
CUMULATIVE:导出自上次全量备份之后所有变化,不需要保存大量小增量文件。 备份:
expdp xxx full=y CUMULATIVE=y dumpfile=cum_02.dmp
恢复:先全量,再恢复这一份累积增量即可,不需要多个增量文件。
四、两种故障场景恢复方案
场景 1:数据库完全损坏,整库重建恢复
- 新建实例,创建表空间、用户;
- impdp 导入初始全量 dmp;
- 按备份时间,依次导入全部增量 dmp;
- 校验表、数据量、存储过程、索引、约束。
场景 2:误删表 / 误操作,时间点恢复(expdp 增量不支持时间点闪回恢复)
expdp 增量备份是逻辑备份,不能像 RMAN 那样精确恢复到某时间点 ,只能恢复到备份文件对应的备份时刻。 如果要精确时间点,需要配合 Oracle 归档日志 + RMAN。
五、传统 exp/imp 注意点(坑)
exp老工具没有真正的增量备份,所谓增量 exp 是表级增量,局限性很大:
bash
exp xxx INCREMENTAL=y
不推荐生产使用,逻辑增量优先使用 expdp。
六、生产实操注意事项
- 保存备份清单:记录每一个 dmp 备份时间、类型(全量 / 增量),恢复必须按顺序;
- 增量 dmp 损坏:如果中间某一份增量 dmp 损坏,只能恢复到上一个完好备份点,之后变更丢失;
- 导入时建议加
TABLE_EXISTS_ACTION=TRUNCATE/REPLACE,根据业务选择; - 权限:directory 目录读写权限、用户 expdp/impdp 权限;
- 逻辑备份 dmp 不恢复 redo、undo,不会恢复已删除对象的 drop 操作,只恢复备份时刻存在的对象。
七、对比 RMAN
- dmp(expdp):逻辑备份,导出对象数据 ,跨平台迁移友好,增量是逻辑对象增量,不能做介质恢复。
- RMAN:物理备份,支持精确时间点恢复、块级恢复。生产库建议 RMAN 为主,expdp dmp 做额外逻辑备份。
八、极简总结恢复流程
备份链:
full01(全量) → incr02(增量1) → incr03(增量2)恢复:
- impdp 恢复 full01
- impdp INCREMENTAL=y 恢复 incr02
- impdp INCREMENTAL=y 恢复 incr03
- 数据校验