Data Pump 是 10g+ 替代 EXP/IMP 的高性能並行導入導出工具,核心差異在於轉儲文件只能寫入目錄對象映射的 OS 路徑,需預先創建 DIRECTORY 並授權。
CREATE DIRECTORY dump_dir AS 'c:\exp';
GRANT READ, WRITE ON DIRECTORY dump_dir TO scott;
-- Unix/Linux 需同步 OS 權限:chown -R oracle:dba /exp
EXPDP scott/tiger DIRECTORY=dump_dir DUMPFILE=dept.dmp TABLES=dept
EXPDP scott/tiger DIRECTORY=dump_dir DUMPFILE=schema.dmp LOGFILE=schema.log SCHEMAS=system
EXPDP scott/tiger DIRECTORY=dump_dir DUMPFILE=tb.dmp LOGFILE=tb.log TABLESPACES=users
EXPDP system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=Y
-- 普通用戶需授權:GRANT EXP_FULL_DATABASE TO scott;
-- parfile.par
DIRECTORY=dump_dir
DUMPFILE=full_%U.dmp
LOGFILE=full.log
FULL=Y
PARALLEL=4
COMPRESSION=ALL
-- 執行
EXPDP system/manager PARFILE=parfile.par
| 參數 | 作用 | 語法示例 |
|---|---|---|
REMAP_SCHEMA | 源 Schema → 目標 Schema | REMAP_SCHEMA=src:tgt |
REMAP_TABLESPACE | 源表空間 → 目標表空間 | REMAP_TABLESPACE=src_tbs:tgt_tbs |
REMAP_DATAFILE | 源數據文件路徑 → 目標路徑(跨平台) | REMAP_DATAFILE='/u01/oradata/file.dbf':'/u02/oradata/file.dbf' |
REUSE_DATAFILES | 創建表空間時覆蓋同名文件 | REUSE_DATAFILES=Y |
SKIP_UNUSABLE_INDEXES | 跳過不可用索引 | SKIP_UNUSABLE_INDEXES=Y |
SQLFILE | 導出 DDL 腳本不執行 | SQLFILE=dir:script.sql |
IMPDP system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp \
REMAP_SCHEMA=old_app:new_app \
REMAP_TABLESPACE=app_data:app_data_new \
REMAP_DATAFILE='/u01/app/oracle/oradata/ORCL/app_data.dbf':'/u02/app/oracle/oradata/ORCL/app_data_new.dbf' \
TABLE_EXISTS_ACTION=REPLACE \
LOGFILE=imp.log
PARALLEL=n:並行度(CPU 核心數建議值)COMPRESSION=ALL|METADATA_ONLY|NONE:壓縮級別NETWORK_LINK:跨庫直接導入,無需中轉 DMP 文件DBA_DATAPUMP_JOBS、DBA_DATAPUMP_SESSIONSData Pump 是 Oracle 遷移、升級、刷新、審計的標準工具,熟練掌握 REMAP 系列參數可實現零代碼異構環境克隆。