Oracle dmp(exp/imp、expdp/impdp)全量 + 增量备份恢复方案

目录

一、备份逻辑回顾(expdp)

[二、完整恢复方案(数据泵 impdp)](#二、完整恢复方案(数据泵 impdp))

恢复原则

[步骤 1:恢复基础全量备份](#步骤 1:恢复基础全量备份)

[步骤 2:按时间顺序逐个恢复增量 dmp](#步骤 2:按时间顺序逐个恢复增量 dmp)

[三、累积增量 CUMULATIVE 模式](#三、累积增量 CUMULATIVE 模式)

四、两种故障场景恢复方案

[场景 1:数据库完全损坏,整库重建恢复](#场景 1:数据库完全损坏,整库重建恢复)

[场景 2:误删表 / 误操作,时间点恢复(expdp 增量不支持时间点闪回恢复)](#场景 2:误删表 / 误操作,时间点恢复(expdp 增量不支持时间点闪回恢复))

[五、传统 exp/imp 注意点(坑)](#五、传统 exp/imp 注意点(坑))

六、生产实操注意事项

[七、对比 RMAN](#七、对比 RMAN)

八、极简总结恢复流程


重要说明:

  1. 传统 exp 工具本身不支持增量备份 ;只有 expdp(数据泵)支持增量备份(INCREMENTAL),dmp 文件做增量,只能用数据泵;普通 exp 只能每次全量导出。
  2. expdp 增量分为:全量 FULL、增量 INCREMENTAL(仅变化块)、累积增量 CUMULATIVE(自上次全量以来所有变化)
  3. 备份顺序:第 1 次全量备份 dmp ,之后定期做增量备份 dmp 。恢复时必须先恢复全量,再按备份时间顺序依次恢复每一个增量 dmp,不能跳序、不能乱序。

一、备份逻辑回顾(expdp)

  1. 第 1 次:全量备份
bash 复制代码
expdp user/pwd directory=DUMP_DIR dumpfile=full_01.dmp full=y logfile=full_01.log
  1. 后续每次增量备份(只导出变更数据)

    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)

恢复原则

  1. 恢复顺序严格按照备份时间先后:全量 dmp → 最早增量 dmp → 次新增量 dmp → ... → 最新增量 dmp
  2. impdp 恢复增量时,同样使用INCREMENTAL=y参数;
  3. 目标库建议先清理旧用户 / 表,避免对象冲突;
  4. 如果是整库恢复,目标库最好是空库。

步骤 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:数据库完全损坏,整库重建恢复

  1. 新建实例,创建表空间、用户;
  2. impdp 导入初始全量 dmp
  3. 按备份时间,依次导入全部增量 dmp;
  4. 校验表、数据量、存储过程、索引、约束。

场景 2:误删表 / 误操作,时间点恢复(expdp 增量不支持时间点闪回恢复

expdp 增量备份是逻辑备份,不能像 RMAN 那样精确恢复到某时间点 ,只能恢复到备份文件对应的备份时刻。 如果要精确时间点,需要配合 Oracle 归档日志 + RMAN。

五、传统 exp/imp 注意点(坑)

exp老工具没有真正的增量备份,所谓增量 exp 是表级增量,局限性很大:

bash 复制代码
exp xxx INCREMENTAL=y

不推荐生产使用,逻辑增量优先使用 expdp

六、生产实操注意事项

  1. 保存备份清单:记录每一个 dmp 备份时间、类型(全量 / 增量),恢复必须按顺序;
  2. 增量 dmp 损坏:如果中间某一份增量 dmp 损坏,只能恢复到上一个完好备份点,之后变更丢失;
  3. 导入时建议加 TABLE_EXISTS_ACTION=TRUNCATE/REPLACE,根据业务选择;
  4. 权限:directory 目录读写权限、用户 expdp/impdp 权限;
  5. 逻辑备份 dmp 不恢复 redo、undo,不会恢复已删除对象的 drop 操作,只恢复备份时刻存在的对象。

七、对比 RMAN

  • dmp(expdp):逻辑备份,导出对象数据 ,跨平台迁移友好,增量是逻辑对象增量,不能做介质恢复
  • RMAN:物理备份,支持精确时间点恢复、块级恢复。生产库建议 RMAN 为主,expdp dmp 做额外逻辑备份。

八、极简总结恢复流程

备份链:full01(全量) → incr02(增量1) → incr03(增量2) 恢复:

  1. impdp 恢复 full01
  2. impdp INCREMENTAL=y 恢复 incr02
  3. impdp INCREMENTAL=y 恢复 incr03
  4. 数据校验
相关推荐
后台模板学习8 分钟前
用 IM 即时聊天项目一次讲清消息去重算法的踩坑与解决方案
java·数据库·spring
imbackneverdie15 分钟前
国内有哪些比较全面的生物医学相关数据库?
大数据·数据库·人工智能·ai·信息可视化·aigc·科研
数字智核37 分钟前
2026昆山工厂空压机突然停机怎么办?找谁抢修
服务器·网络·数据库
AAA代码批发商1 小时前
Days 39 Linux C 开发之 SQLite 数据库完整学习笔记
linux·c语言·数据库
笑梦无境1 小时前
mysql的安装及配置(3)
数据库·mysql·adb
电商API_180079052471 小时前
跨境1688代采商家,如何借助API打通供应链,实现效率跃迁
大数据·数据库·网络爬虫
小雪崩1 小时前
嵌入式学习 day40:数据库
数据库·学习
Aloudata1 小时前
语义层 vs MCP 工具层:Agent 调用数据时,语义应该放在哪一层
数据库·数据分析·chatbi·data agent·语义层
zcmodeltech1 小时前
源网荷储一体化沙盘模型多场景控制系统设计——基于STM32与Modbus RTU的源网荷储、多能互补、冷热电三联供全场景联动方案,服务范围覆盖全国
数据库·人工智能·stm32·单片机·嵌入式硬件
数智启示录1 小时前
PostgreSQL 执行计划实战(第 9 篇):SQL 和索引没变,计划为什么突然慢一百倍
数据库·经验分享·sql·postgresql·面试