Oracle Data Pump 性能优化详解
Oracle Data Pump 性能优化详解
适用版本:Oracle Database 10g / 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07
1. 概述
Data Pump 性能优化技巧[1]:
详细见:Oracle Data Pump 全集。
2. 并行
2.1 PARALLEL
expdp scott/tiger DIRECTORY=dp DUMPFILE=exp_%U.dmp
PARALLEL=4 FILESIZE=10G
2.2 选择
- CPU 核数
- 磁盘 I/O
- 表大小
- 一般 4-8
2.3 多文件
expdp scott/tiger DIRECTORY=dp DUMPFILE=exp_%U.dmp
PARALLEL=4 FILESIZE=10G
-- 必须多文件,否则并行无效
3. DIRECT PATH
3.1 默认
- Data Pump 默认 Direct Path
- 跳过 SQL 层
- 高速
3.2 限制
- LOB 列
- 对象类型
- 触发器
- 复杂约束
- 自动回退到 External Table
3.3 强制
impdp scott/tiger ... ACCESS_METHOD=DIRECT_PATH
4. 网络
4.1 DATABASE_LINKS
impdp scott/tiger NETWORK_LINK=source_db ...
-- 直接通过网络导入,无需 dump 文件
4.2 优化
- 高速网络
- SQLNET.SEND_TIMEOUT
- 并行
5. 表级并行
5.1 大表
expdp scott/tiger TABLES=big_table PARALLEL=8
-- 单表分片
5.2 分区
- 分区表自动分片
- 并行度高
6. 压缩
6.1 选项
# ALL(数据+元数据)
expdp ... COMPRESSION=ALL
# DATA_ONLY
expdp ... COMPRESSION=DATA_ONLY
# METADATA_ONLY
expdp ... COMPRESSION=METADATA_ONLY
# NONE
expdp ... COMPRESSION=NONE
6.2 性能
- 压缩:减少 I/O,增加 CPU
- 网络传输:受益
- 磁盘:受益
详细见:Oracle 备份压缩与加密。
7. 加密
7.1 选项
# 全部加密
expdp ... ENCRYPTION=ALL
# 数据加密
expdp ... ENCRYPTION=DATA_ONLY
7.2 模式
# 透明
expdp ... ENCRYPTION_MODE=TRANSPARENT
# 密码
expdp ... ENCRYPTION_MODE=PASSWORD ENCRYPTION_PASSWORD=******
# 双模
expdp ... ENCRYPTION_MODE=DUAL
8. 导入优化
8.1 DISABLE 序列
impdp ... TRANSFORM=DISABLE:1
8.2 禁用约束
impdp ... TABLE_EXISTS_ACTION=APPEND DATA_OPTIONS=SKIP_CONSTRAINT_ERRORS
8.3 禁用索引
impdp ... TRANSFORM=INDEXES:N
-- 导入后重建
8.4 禁用触发器
impdp ... TRANSFORM=TRIGGERS:N
8.5 NOLOGGING
impdp ... TRANSFORM=SEGMENT_ATTRIBUTES:N
ALTER TABLE ... NOLOGGING;
9. 速度对比
9.1 exp/imp
- 老工具
- 单线程
- 慢
9.2 Data Pump
- 并行
- Direct Path
- 快 10-100 倍
9.3 测试
# 测试不同参数
expdp ... PARALLEL=2
expdp ... PARALLEL=4
expdp ... PARALLEL=8
10. 监控
10.1 进度
SELECT opname, sofar, totalwork,
ROUND(sofar/totalwork*100, 2) AS pct
FROM v$session_longops
WHERE opname LIKE 'Data Pump%';
10.2 状态
SELECT * FROM dba_datapump_jobs;
SELECT * FROM dba_datapump_sessions;
10.3 日志
expdp ... LOGFILE=exp.log
11. 调优参数
11.1 PGA
ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 4G;
11.2 SGA
ALTER SYSTEM SET SGA_TARGET = 8G;
11.3 进程
SHOW PARAMETER processes;
SHOW PARAMETER sessions;
12. 应用场景
12.1 大数据迁移
- 并行
- Direct Path
- 压缩
12.2 表空间传输
- TTS
- 跨平台
- 最快
详细见:Oracle TTS 传输表空间详解。
12.3 升级
- 全库导出
- 导入新版本
12.4 数据归档
- 历史数据
- 压缩
- 长期存储
13. 常见坑与排错
13.1 ORA-31626
- 作业不存在
- 清理 Master 表
13.2 ORA-39095
- 文件不足
- 增加 dump 文件
13.3 性能差
- 并行不足
- I/O 瓶颈
- 网络慢
14. 最佳实践
- PARALLEL:4-8
- 多文件:必需
- Direct Path:默认
- 压缩:节省
- NOLOGGING:速度
- 禁用约束/触发器:导入
- 监控:进度
- PGA:充足
- 测试:参数
- 日志:记录
15. 参考资料
[1] Oracle Database Utilities 19c, “Data Pump” https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/