傳統 EXP/IMP 效率低、功能弱,數據泵 (Data Pump) 成為主流。本文記錄某項目從 EXP 失敗轉用 EXPDP 的完整過程:Directory 創建、導出、目標端表空間/用戶/權限重建、導入,附完整權限授予腳本。
-- 1. 創建 Directory 對象 CREATE DIRECTORY oracleDB AS 'D:\OracleDB'; -- 2. 授權 GRANT READ, WRITE ON DIRECTORY oracleDB TO radpcs; -- 3. 執行導出 (全庫模式) expdp radpcs/ictradpcs@radpcs \ DIRECTORY=oracleDB \ DUMPFILE=20150226.dmp \ LOGFILE=20150226.log \ FULL=Y
-- 以 SYSDBA 登錄
CONN / AS SYSDBA
-- 創建表空間 (務必與源端名稱、數量一致)
CREATE TABLESPACE RADPCS_DATA
DATAFILE 'D:\OracleDB\radpcs_DATA.DBF' SIZE 200M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE 16383M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1024K;
CREATE TABLESPACE RADPCS_INDX
DATAFILE 'D:\OracleDB\radpcs_INDX.DBF' SIZE 200M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE 16383M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1024K;
-- 創建用戶
CREATE USER radpcs IDENTIFIED BY ictradpcs
DEFAULT TABLESPACE radpcs_data
QUOTA UNLIMITED ON radpcs_data
QUOTA UNLIMITED ON radpcs_indx;
-- 權限授予腳本 (核心系統權限+角色)
GRANT CONNECT, RESOURCE, DBA TO radpcs;
GRANT CREATE ANY TABLE, CREATE PROCEDURE, CREATE SESSION,
DEBUG CONNECT SESSION, SELECT ANY TABLE, UNLIMITED TABLESPACE TO radpcs;
-- 完整 100+ 行權限腳本見原文,建議保存為 radpcs_grants.sql 版本控制
-- 1. 同步創建 Directory 並授權 CREATE DIRECTORY oracleDB AS 'D:\OracleDB'; GRANT READ, WRITE ON DIRECTORY oracleDB TO radpcs; -- 2. 執行導入 impdp radpcs/ictradpcs@radpcs \ DIRECTORY=oracleDB \ DUMPFILE=20150226.dmp \ LOGFILE=20150226_imp.log
| 維度 | EXP/IMP | EXPDP/IMPDP |
|---|---|---|
| 運行位置 | 客戶端進程 | 服務端進程 (需 Directory 對象) |
| 性能 | 單線程,慢 | 支援 PARALLEL 並行,快 5-10 倍 |
| 功能 | 基礎導出入 | 並行、過濾、轉換、壓縮、加密、網絡模式、可插拔表空間 |
| 版本支援 | 所有版本 | 10g+,不支援 9i 及以下 |
COMPATIBLE 參數、字符集一致;ORA-39083、ORA-31684 等錯誤並逐一解決;EXEC DBMS_STATS.GATHER_SCHEMA_STATS('RADPCS');。