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. 网络

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. 最佳实践

  1. PARALLEL:4-8
  2. 多文件:必需
  3. Direct Path:默认
  4. 压缩:节省
  5. NOLOGGING:速度
  6. 禁用约束/触发器:导入
  7. 监控:进度
  8. PGA:充足
  9. 测试:参数
  10. 日志:记录

15. 参考资料

[1] Oracle Database Utilities 19c, “Data Pump” https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/