Oracle Data Pump 全集
Oracle Data Pump 全集
适用版本:Oracle Database 10g / 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07
1. 概述
Data Pump 是 Oracle 逻辑备份迁移工具[1]:
特性:
- 高性能
- 并行
- 网络模式
- 选择性
详细见:Oracle Data Pump 详解。
2. expdp 导出
2.1 全库
expdp system/pwd DIRECTORY=dpump_dir DUMPFILE=full.dmp
FULL=Y PARALLEL=8 COMPRESSION=ALL
2.2 Schema
expdp system/pwd DIRECTORY=dpump_dir DUMPFILE=scott.dmp
SCHEMAS=SCOTT,HR
2.3 表
expdp system/pwd DIRECTORY=dpump_dir DUMPFILE=tables.dmp
TABLES=SCOTT.EMP,SCOTT.DEPT
2.4 表空间
expdp system/pwd DIRECTORY=dpump_dir DUMPFILE=ts.dmp
TABLESPACES=USERS,TOOLS
3. impdp 导入
3.1 全库
impdp system/pwd DIRECTORY=dpump_dir DUMPFILE=full.dmp
FULL=Y PARALLEL=8
3.2 Schema
impdp system/pwd DIRECTORY=dpump_dir DUMPFILE=scott.dmp
SCHEMAS=SCOTT
3.3 表
impdp system/pwd DIRECTORY=dpump_dir DUMPFILE=tables.dmp
TABLES=SCOTT.EMP
3.4 重映射
# Schema 重命名
impdp ... REMAP_SCHEMA=SCOTT:SCOTT_NEW
# 表空间重命名
impdp ... REMAP_TABLESPACE=USERS:USERS_NEW
# 表重命名
impdp ... REMAP_TABLE=SCOTT.EMP:EMP_NEW
4. 选项
4.1 CONTENT
# 全部
CONTENT=ALL
# 仅数据
CONTENT=DATA_ONLY
# 仅元数据
CONTENT=METADATA_ONLY
4.2 EXCLUDE / INCLUDE
# 排除
EXCLUDE=TABLE:"IN ('EMP', 'DEPT')"
EXCLUDE=INDEX
EXCLUDE=VIEW
EXCLUDE=PROCEDURE
# 包含
INCLUDE=TABLE:"LIKE 'EMP%'"
INCLUDE=SCHEMA:"IN ('SCOTT')"
4.3 QUERY
QUERY=SCOTT.EMP:"WHERE dept_id = 10"
QUERY=SCOTT.EMP:"WHERE salary > 5000"
4.4 SAMPLE
SAMPLE=SCOTT.EMP:50 # 50%
4.5 FLASHBACK
FLASHBACK_TIME="TO_TIMESTAMP('2026-07-21 15:00:00', 'YYYY-MM-DD HH24:MI:SS')"
FLASHBACK_SCN=1234567
5. 网络
5.1 NETWORK_LINK
# 源库 DB Link
CREATE DATABASE LINK source_link
CONNECT TO scott IDENTIFIED BY ****** USING 'source';
# 直接导入
impdp system/pwd DIRECTORY=dpump_dir
NETWORK_LINK=source_link
SCHEMAS=SCOTT
5.2 优势
- 无需 dump 文件
- 直接传输
- 跨库
6. 并行
6.1 PARALLEL
PARALLEL=8
6.2 文件
# 多文件
DUMPFILE=exp_01.dmp, exp_02.dmp, exp_03.dmp
# 或
DUMPFILE=exp_%U.dmp FILESIZE=10G
7. 压缩
7.1 类型
# 全部
COMPRESSION=ALL
# 仅元数据(默认)
COMPRESSION=METADATA_ONLY
# 仅数据
COMPRESSION=DATA_ONLY
# 无
COMPRESSION=NONE
7.2 算法
COMPRESSION_ALGORITHM=BASIC # 默认
COMPRESSION_ALGORITHM=LOW
COMPRESSION_ALGORITHM=MEDIUM
COMPRESSION_ALGORITHM=HIGH
8. 加密
8.1 类型
ENCRYPTION=ALL
ENCRYPTION=DATA_ONLY
ENCRYPTION=METADATA_ONLY
ENCRYPTION=NONE
8.2 模式
# 密码
ENCRYPTION_MODE=PASSWORD
ENCRYPTION_PASSWORD=******
# 透明
ENCRYPTION_MODE=TRANSPARENT
# 双重
ENCRYPTION_MODE=DUAL
9. 传输表空间(TTS)
9.1 自包含
BEGIN
DBMS_TTS.TRANSPORT_SET_CHECK('users, tools', TRUE);
END;
/
SELECT * FROM transport_set_violations;
9.2 导出元数据
expdp system/pwd DIRECTORY=dpump_dir DUMPFILE=tts.dmp
TRANSPORT_TABLESPACES=users,tools
TRANSPORT_FULL_CHECK=Y
9.3 传输
# 复制数据文件
scp users01.dbf tools01.dbf target:/u01/oradata/
# 导入
impdp system/pwd DIRECTORY=dpump_dir DUMPFILE=tts.dmp
TRANSPORT_DATAFILES='/u01/oradata/users01.dbf','/u01/oradata/tools01.dbf'
详细见:Oracle TTS 传输表空间。
10. 版本兼容
# 兼容版本
VERSION=11.2
VERSION=12.2
VERSION=19.0
VERSION=COMPATIBLE # 默认
VERSION=LATEST
11. 监控
11.1 视图
SELECT * FROM dba_datapump_jobs;
SELECT * FROM dba_datapump_sessions;
11.2 attach
# attach 任务
expdp system/pwd ATTACH=SYS_EXPORT_SCHEMA_01
# 状态
STATUS
# 停止
KILL_JOB
STOP_JOB
11.3 日志
LOGFILE=exp.log
12. 性能优化
12.1 PARALLEL
- CPU 数
- 磁盘 I/O
- 4-16 典型
12.2 ACCESS_METHOD
# 直接路径(默认)
ACCESS_METHOD=DIRECT_PATH
# 外部表
ACCESS_METHOD=EXTERNAL_TABLE
# 适合:复杂查询/视图/分区
12.3 FILESIZE
- 大文件:性能
- 小文件:管理
- 多文件并行
13. 12c+ 新特性
13.1 VIEW
INCLUDE=VIEW
VIEWS_AS_TABLES=SCOTT.EMP_VIEW
13.2 Partition
# 单分区
TABLES=SCOTT.SALES:SALES_2026
# 子分区
TABLES=SCOTT.SALES:SALES_Q1_2026
13.3 在线重定义
# 在线
impdp ... TRANSFORM=DISABLE_ARCHIVE_LOGGING:Y
14. 安全
14.1 DIRECTORY
CREATE DIRECTORY dpump_dir AS '/u01/dpump';
GRANT READ, WRITE ON DIRECTORY dpump_dir TO scott;
14.2 加密
- ENCRYPTION_PASSWORD
- TDE 集成
15. 常见坑与排错
15.1 ORA-39002
- 参数错误
- 检查语法
15.2 ORA-31626 / 31633
- 任务存在
- PURGE
- DBMS_DATAPUMP.PURGE_PROCESS
15.3 ORA-31655
- 无数据
- 检查 INCLUDE/EXCLUDE
15.4 ORA-39154
- 对象不存在
- 检查权限
16. 最佳实践
- PARALLEL:性能
- COMPRESSION:空间
- DIRECTORY 权限:正确
- FLASHBACK:一致性
- NETWORK_LINK:跨库
- TTS:跨平台
- EXCLUDE/INCLUDE:选择性
- 监控 attach:进度
- 测试:可行
- 文档化:流程
17. 参考资料
[1] Oracle Database Utilities 19c, “Data Pump” https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump.html