expdp 与 impdp 是什么
Data Pump 是 Oracle 10g 起取代老 exp/imp 的逻辑导出导入工具对:expdp 在数据库服务器侧启动作业,把 schema、表、表空间或整库导出成专有格式的 dump 文件,落在库内目录对象指向的服务器路径上;impdp 负责回放。它支持并行、REMAP_SCHEMA 与 REMAP_TABLESPACE 变换,适合跨版本迁移、逻辑归档与部分对象恢复。
基本信息
| 适用平台 | Oracle Database 10g 及以后 |
|---|---|
| 执行位置 | expdp/impdp 客户端程序连接数据库,实际作业由服务器进程执行 |
| 落点 | 库内目录对象(DIRECTORY)指向的操作系统路径 |
| 导出粒度 | FULL 整库、SCHEMAS、TABLES、TABLESPACES |
| 并行 | PARALLEL 参数,受文件数、CPU 与 IO 制约 |
| 权限要求 | 需要 EXP_FULL_DATABASE / IMP_FULL_DATABASE 或相应 DATAPUMP 权限,创建目录对象需 DBA |
典型使用场景
- 跨版本迁移:导出后用 REMAP_SCHEMA 与 REMAP_TABLESPACE 落到目标环境
- 单个 schema 的逻辑归档,供审计或留档
- 误操作后只恢复一张表或一个分区,不动整库
- 给测试环境做一份数据副本(可配合条件导出裁剪数据量)
- 大表抽样:用 QUERY 参数只导符合条件的行
导出与导入
导出与导入
# 1) 库内创建目录对象并授权(需 DBA 权限)
CREATE OR REPLACE DIRECTORY dpdir AS '/backup/dpump';
GRANT READ, WRITE ON DIRECTORY dpdir TO system;
# 2) 导出 hr schema,并行 2,写作业日志
expdp system/*** DIRECTORY=dpdir DUMPFILE=hr.dmp SCHEMAS=hr PARALLEL=2 LOGFILE=hr-exp.log
# 3) 导入到新 schema 与新表空间(不影响原库对象)
impdp system/*** DIRECTORY=dpdir DUMPFILE=hr.dmp REMAP_SCHEMA=hr:hr_new REMAP_TABLESPACE=users:users_new LOGFILE=hr-imp.log
# 4) 只导一张表,目标表已存在时追加
impdp system/*** DIRECTORY=dpdir DUMPFILE=hr.dmp TABLES=hr.employees TABLE_EXISTS_ACTION=APPEND常用参数读法
| 参数 | 作用 | 注意 |
|---|---|---|
| DIRECTORY | 目录对象名,指向服务器物理路径 | 路径必须存在且数据库属主可写,否则报 ORA-39002 系列错误 |
| DUMPFILE | 导出文件名,可给多个 | 文件数太少会限制实际并行度 |
| SCHEMAS / TABLES | 导出对象范围 | 与 FULL 互斥,名称写错直接报错 |
| REMAP_SCHEMA | 导入时改换 schema 名 | 源对象不在 dump 中会报错 |
| PARALLEL | 并行工作进程数 | 受 CPU、IO 与文件数限制,过高反而更慢 |
| LOGFILE | 作业日志文件名 | 出错先看日志,再决定重跑还是换参数 |
整库逻辑恢复的耗时通常明显高于 RMAN 物理恢复:RTO 敏感的库应以物理备份为主,Data Pump 承担迁移与选择性恢复。两者解决的层次不同,不互相替代。
导入前先核对源库的版本、字符集与对象依赖:跨大版本导入默认只允许导入到同级或更高版本,字符集不一致时会报错或产生乱码。