傳統 exp/imp 在新安裝環境頻繁出現 EXP-0006: 內部不一致錯誤。本文說明錯誤成因、exp/imp 與 expdp/impdp 差異,並提供完整 Data Pump 遷移實戰步驟(建立目錄、表空間、用戶授權、導出導入),助您繞過舊工具坑點。
| 項目 | exp/imp | expdp/impdp |
|---|---|---|
| 執行端 | 客戶端 | 伺服端 |
| 效能 | 低(單執行緒) | 高(平行、壓縮、加密) |
| 功能 | 基本導出導入 | 平行、過濾、轉換、壓縮、加密、互動模式 |
| 版本支援 | 全版本 | 10g 以上(9i 需 exp/imp) |
結論:10g+ 環境優先使用 Data Pump。
-- 建立目錄物件(指向伺服端實體路徑)
CREATE DIRECTORY oracleDB AS 'D:\OracleDB';
-- 授予讀寫權限
GRANT READ, WRITE ON DIRECTORY oracleDB TO radpcs;
expdp radpcs/ictradpcs@rdpcs \
DIRECTORY=oracleDB \
DUMPFILE=20150226.dmp \
LOGFILE=20150226.log \
FULL=Y
-- 資料表空間
CREATE TABLESPACE RADPCS_DATA
LOGGING
DATAFILE 'D:\OracleDB\radpcs_DATA.DBF' SIZE 200M REUSE
AUTOEXTEND ON NEXT 10M MAXSIZE 16384M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;
-- 索引表空間
CREATE TABLESPACE RADPCS_INDX
LOGGING
DATAFILE 'D:\OracleDB\radpcs_INDX.DBF' SIZE 200M REUSE
AUTOEXTEND ON NEXT 10M MAXSIZE 16384M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;
關鍵:表空間名稱、檔案數量必須與來源一致,否則導入會報 ORA-39083: tablespace not exist。若不確定,可先建臨時表空間,依錯誤提示補建。
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 VIEW, CREATE SEQUENCE, CREATE PROCEDURE TO radpcs;
GRANT READ, WRITE ON DIRECTORY oracleDB TO radpcs;
CREATE DIRECTORY oracleDB AS 'D:\OracleDB';
GRANT READ, WRITE ON DIRECTORY oracleDB TO radpcs;
impdp radpcs/ictradpcs@rdpcs \
DIRECTORY=oracleDB \
DUMPFILE=20150226.dmp \
LOGFILE=20150226_imp.log
IMP_FULL_DATABASE、READ/WRITE DIRECTORY。VERSION=11.2.0.4.0(目標版本)。PARALLEL=4 加速大量資料導入導出。遭遇 EXP-0006 時,直接切換到 Data Pump 是最快解法。掌握「目錄→表空間→用戶→授權→導出→導入」六步驟,即可完成跨環境、跨版本的高效能資料遷移。