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. 数据校验
相关推荐
福大大架构师每日一题2 小时前
agno v2.8.7 发布:顾问模型、精准路线、调度能力全面升级,10项关键修复一次看懂
java·开发语言·数据库
深念Y2 小时前
老Flyme 官方 root 开启 ADB TCP 方案
linux·数据库·网络协议·tcp/ip·adb·智能手机·emmc
c2385610 小时前
MySQL 基础用法(上):库表管理与数据增删改
c语言·数据库·c++·mysql
jnrjian11 小时前
postgres database 更换用户
数据库·postgresql
無a伟12 小时前
redis缓存完整详解
数据库·redis·缓存
G311354227313 小时前
大模型不可用时,业务还能不能继续:企业需要设计降级方案
大数据·服务器·数据库·人工智能·深度学习
VALENIAN瓦伦尼安教学设备14 小时前
激光对中仪采购要点
数据库·嵌入式硬件·算法
码农颜14 小时前
5.2.2 隔离级别
数据库·mysql
微三云 - 廖会灵 (私域系统开发)14 小时前
基于 OPC 流程控制的抖店集群 SaaS 平台设计与渠道分账系统实现
数据库
骇客野人15 小时前
MySQL 信创化迁移至 PolarDB-X 整体实施方案
数据库·mysql