数据库.dmp文件是用来备份和恢复数据库数据的吗?
- 内容介绍
- 文章标签
- 相关推荐
在 Oracle中,.dmp 文件是使用 Data Pump Export或传统的 exp 命令导出的二进制转储文件。它把数据库的结构和数据全部封装进去,形成一个可以在其他环境中重新导入的完整快照。
.dmp 能否直接当作“备份”使用?
答案是这方面,可以但有前提条件。
- 备份意义:.dmp 保存了导出时刻的所有对象和数据,能够在数据库故障、误删或需要回滚时恢复到该时间点。
- 限制:.dmp 不是实时增量备份,也不包含控制文件、日志文件等物理层面的信息;在做灾难恢复时往往需要配合 RMAN 或其他物理备份方案。
使用者常见痛点 & 方法
1️⃣ 数据库崩溃后找不到可用的备份
痛点:程序突然宕机。只剩下几天前的全量备份,业务损失巨大。
解决:定期使用 expdp/impdp 导出 .dmp。结合自动化脚本和调度工具,确保每日至少一次增量导出,形成可追溯的时间线。
2️⃣ 迁移时出现版本不兼容报错
痛点:.dmp 文件在新环境里导入失败,提示对象不兼容或字符集错误。老实说,
解决:
-
导出时使用
VERSION=XX.YY参数匹配目标库版本。怎么说呢, -
确保源库与目标库字符集一致或使用
NLS_LANG/NLS_CHARACTERSET参数进行转换。
3️⃣ 想快速搭建测试/开发环境。却不知道怎么复制生产库
痛点:.dmp 体积大,手动导入耗时且易出错。
解决:
-
SPEED=FASTEST/PARALLEL=n提高导入速度。
.dmp 的主要使用场景
A. 数据库备份与恢复
.dmp 可以将整个数据库或指定 schema 导出为单个文件,实现“快照式”备份。出现故障时只需执行相应的 import 命令即可把数据库恢复到导出时的状态。
B. 数据迁移与升级
- 将旧版本 Oracle 的数据迁移到新版本 - 跨网站搬迁 - 将 Oracle 数据迁移到兼容的第三方程序
C. 克隆 / 复制 / 分发环境
.dmp 常用于创建生产库的克隆,用于性能测试、灾难演练或开发调试。只要把 .dmp 导入到空库,即可得到一模一样的数据副本。
D. 灾难恢复演练
.dmp 为 DR 提供了“离线”恢复手段。配合脚本,可以在几分钟内完成全库恢复演练,提高团队对突发事件的响应速度。
.dmp 的操作流程
1️⃣ 导出数据库
# 使用传统 exp
exp username/password@database file=full_export.dmp full=y
# 使用 Data Pump expdp
expdp username/password@database \
DIRECTORY=dp_dir \
DUMPFILE=full_export_%U.dmp \
LOGFILE=export.log \
FULL=Y \
PARALLEL=4
再看关键参数说明。
-
DIRECTORY: 预先在数据库里创建指向 OS 目录的对象,如
Create directory dp_dir as '/u01/dpdump'; Grant read,write on directory dp_dir to user; - DUMPFILE: 支持通配符 %U。实现多文件分片,提高并行度。
- PARRALLEL: 指定并行工作进程数,可明显提高大容量库的导出速度。
- CLOSE_DATABASE_LINKS/Y/N:: 是否关闭 DB 链接,以免跨库数据泄漏。
2️⃣ 导入 .dmp 到目标库
# 使用传统 imp
imp username/password@target_db file=full_export.dmp full=y
# 使用 Data Pump impdp
impdp username/password@target_db \
DIRECTORY=dp_dir \
DUMPFILE=full_export_%U.dmp \
LOGFILE=import.log \
FULL=Y \
PARALLEL=4 \
TABLE_EXISTS_ACTION=APPEND
常用导入选项这方面。
-
TABLE_EXISTS_ACTION:S KIP / REPLACE / APPEND,根据业务需求决定是否覆盖已有表。
-
REMAPSCHEMA: 将源 schema 重映射到目标 schema。例如
"REMAPSCHEMA=olduser:newuser" - REMAPTABLESPACE: 改变表空间位置,以适配目标库结构。
- MATCH=y/n:: 是否严格匹配对象属性,如约束、索引等;设置为 N 可加速但可能导致后续手工修复。
- TRANSFORM:DISABLEARCHIVE_LOGGING:y 如果目标库开启归档日志。可临时关闭以加速导入,再手动开启。
-
REMAPSCHEMA: 将源 schema 重映射到目标 schema。例如
⚡ 实践小技巧。让 .dmp 更好用
- 压缩导出后立即压缩,节省存储空间与带宽;解压后再 import,
- 增量 export利用查询条件 导出最近一天变化的数据,实现准实时备份。
- 日志审计务必保留 export.log 与 import.log。日志里记录了成功/失败对象列表,是排查问题唯一依据。
- 权限准备执行 exp/imp 前确认使用者拥有 EXPFULLDATABASE / IMPFULLDATABASE 权限,否则会出现 “ORA‑39002: invalid object type” 错误。
陈词 – 为什么必须掌握 .dmp?话说回来,
- **安全性**:即使物理磁盘损坏。只要有最新 .dmp,就能快速恢复业务。
- **灵活性**:同一个 . d mp 可以用于备份、迁移、克隆、灾难演练,多场景“一键搞定”。
- **可审计性**:每次 export/import 都生成详细日志,为合规审计提供可靠依据。
这篇文章共计约 1700 字,预计阅读时间约 7 分钟。如需将上述命令写成自动化脚本,请参考官方文档中的 “Data Pump API” 示例或结合 Ansible / Shell 脚本实现定时任务化。
在 Oracle中,.dmp 文件是使用 Data Pump Export或传统的 exp 命令导出的二进制转储文件。它把数据库的结构和数据全部封装进去,形成一个可以在其他环境中重新导入的完整快照。
.dmp 能否直接当作“备份”使用?
答案是这方面,可以但有前提条件。
- 备份意义:.dmp 保存了导出时刻的所有对象和数据,能够在数据库故障、误删或需要回滚时恢复到该时间点。
- 限制:.dmp 不是实时增量备份,也不包含控制文件、日志文件等物理层面的信息;在做灾难恢复时往往需要配合 RMAN 或其他物理备份方案。
使用者常见痛点 & 方法
1️⃣ 数据库崩溃后找不到可用的备份
痛点:程序突然宕机。只剩下几天前的全量备份,业务损失巨大。
解决:定期使用 expdp/impdp 导出 .dmp。结合自动化脚本和调度工具,确保每日至少一次增量导出,形成可追溯的时间线。
2️⃣ 迁移时出现版本不兼容报错
痛点:.dmp 文件在新环境里导入失败,提示对象不兼容或字符集错误。老实说,
解决:
-
导出时使用
VERSION=XX.YY参数匹配目标库版本。怎么说呢, -
确保源库与目标库字符集一致或使用
NLS_LANG/NLS_CHARACTERSET参数进行转换。
3️⃣ 想快速搭建测试/开发环境。却不知道怎么复制生产库
痛点:.dmp 体积大,手动导入耗时且易出错。
解决:
-
SPEED=FASTEST/PARALLEL=n提高导入速度。
.dmp 的主要使用场景
A. 数据库备份与恢复
.dmp 可以将整个数据库或指定 schema 导出为单个文件,实现“快照式”备份。出现故障时只需执行相应的 import 命令即可把数据库恢复到导出时的状态。
B. 数据迁移与升级
- 将旧版本 Oracle 的数据迁移到新版本 - 跨网站搬迁 - 将 Oracle 数据迁移到兼容的第三方程序
C. 克隆 / 复制 / 分发环境
.dmp 常用于创建生产库的克隆,用于性能测试、灾难演练或开发调试。只要把 .dmp 导入到空库,即可得到一模一样的数据副本。
D. 灾难恢复演练
.dmp 为 DR 提供了“离线”恢复手段。配合脚本,可以在几分钟内完成全库恢复演练,提高团队对突发事件的响应速度。
.dmp 的操作流程
1️⃣ 导出数据库
# 使用传统 exp
exp username/password@database file=full_export.dmp full=y
# 使用 Data Pump expdp
expdp username/password@database \
DIRECTORY=dp_dir \
DUMPFILE=full_export_%U.dmp \
LOGFILE=export.log \
FULL=Y \
PARALLEL=4
再看关键参数说明。
-
DIRECTORY: 预先在数据库里创建指向 OS 目录的对象,如
Create directory dp_dir as '/u01/dpdump'; Grant read,write on directory dp_dir to user; - DUMPFILE: 支持通配符 %U。实现多文件分片,提高并行度。
- PARRALLEL: 指定并行工作进程数,可明显提高大容量库的导出速度。
- CLOSE_DATABASE_LINKS/Y/N:: 是否关闭 DB 链接,以免跨库数据泄漏。
2️⃣ 导入 .dmp 到目标库
# 使用传统 imp
imp username/password@target_db file=full_export.dmp full=y
# 使用 Data Pump impdp
impdp username/password@target_db \
DIRECTORY=dp_dir \
DUMPFILE=full_export_%U.dmp \
LOGFILE=import.log \
FULL=Y \
PARALLEL=4 \
TABLE_EXISTS_ACTION=APPEND
常用导入选项这方面。
-
TABLE_EXISTS_ACTION:S KIP / REPLACE / APPEND,根据业务需求决定是否覆盖已有表。
-
REMAPSCHEMA: 将源 schema 重映射到目标 schema。例如
"REMAPSCHEMA=olduser:newuser" - REMAPTABLESPACE: 改变表空间位置,以适配目标库结构。
- MATCH=y/n:: 是否严格匹配对象属性,如约束、索引等;设置为 N 可加速但可能导致后续手工修复。
- TRANSFORM:DISABLEARCHIVE_LOGGING:y 如果目标库开启归档日志。可临时关闭以加速导入,再手动开启。
-
REMAPSCHEMA: 将源 schema 重映射到目标 schema。例如
⚡ 实践小技巧。让 .dmp 更好用
- 压缩导出后立即压缩,节省存储空间与带宽;解压后再 import,
- 增量 export利用查询条件 导出最近一天变化的数据,实现准实时备份。
- 日志审计务必保留 export.log 与 import.log。日志里记录了成功/失败对象列表,是排查问题唯一依据。
- 权限准备执行 exp/imp 前确认使用者拥有 EXPFULLDATABASE / IMPFULLDATABASE 权限,否则会出现 “ORA‑39002: invalid object type” 错误。
陈词 – 为什么必须掌握 .dmp?话说回来,
- **安全性**:即使物理磁盘损坏。只要有最新 .dmp,就能快速恢复业务。
- **灵活性**:同一个 . d mp 可以用于备份、迁移、克隆、灾难演练,多场景“一键搞定”。
- **可审计性**:每次 export/import 都生成详细日志,为合规审计提供可靠依据。
这篇文章共计约 1700 字,预计阅读时间约 7 分钟。如需将上述命令写成自动化脚本,请参考官方文档中的 “Data Pump API” 示例或结合 Ansible / Shell 脚本实现定时任务化。

