傳統 exp/imp 指令(Oracle 10g 以前主流,11g+ 仍支援但建議改用 Data Pump)
1. 完整資料庫匯出/匯入
# 匯出完整資料庫 TEST
exp system/manager@TEST file=d:\system.dmp full=y
# 匯入至 oradb01(忽略已存在物件錯誤)
imp system/manager@oradb01 full=y file=d:\system.dmp ignore=y
2. 指定 Schema 匯出/匯入
# 匯出 system、sys 兩個 schema
exp system/manager@TEST file=d:\sysuser.dmp owner=(system,sys)
# 匯入並對應 schema(fromuser→touser)
imp system/manager@oradb01 file=d:\sysuser.dmp fromuser=(system,sys) ignore=y
3. 單一 Schema 匯出/跨使用者匯入
# 匯出 testuser
exp system/manager@TEST file=d:\testuser.dmp owner=testuser
# 匯入至 testuser1
imp system/manager@oradb01 file=d:\testuser.dmp fromuser=testuser touser=testuser1 ignore=y
4. 指定資料表匯出/匯入
# 匯出 testuser.table1、table2
exp system/manager@TEST file=d:\tbls.dmp tables=(testuser.table1,testuser.table2)
# 匯入(同樣支援 fromuser/touser 對應)
imp system/manager@oradb01 file=d:\tbls.dmp fromuser=testuser touser=testuser1 ignore=y
5. 條件式匯出(WHERE 子句)
# 匯出 table1 中 filed1 以 '00' 開頭的資料
exp system/manager@TEST file=d:\tblfiled1.dmp tables=table1 query="WHERE filed1 LIKE '00%'"
# 匯入
imp system/manager@oradb01 file=d:\tblfiled1.dmp fromuser=testuser touser=testuser1 ignore=y
Data Pump (expdp/impdp) 現代替代方案(10g+ 推薦)
| 傳統指令 | Data Pump 對應 | 優勢 |
| exp | expdp | 平行處理、網路模式、可中斷續傳、細緻物件過濾 |
| imp | impdp | 同步匯入、REMAP_SCHEMA/TABLESPACE、SQLFILE 預覽 DDL |
Data Pump 常用範例
# 建立目錄物件(需 SYSDBA)
CREATE DIRECTORY dpump_dir AS '/u01/dpump';
GRANT READ, WRITE ON DIRECTORY dpump_dir TO system;
# 完整匯出(平行度 4)
expdp system/manager@TEST directory=dpump_dir dumpfile=full_%U.dmp full=y parallel=4
# Schema 匯出
expdp system/manager@TEST directory=dpump_dir dumpfile=testuser.dmp schemas=testuser
# 匯入並重對應 Schema 與表空間
impdp system/manager@oradb01 directory=dpump_dir dumpfile=testuser.dmp \
remap_schema=testuser:testuser1 remap_tablespace=users:users_data
常用參數對照表
| 功能 | exp/imp | expdp/impdp |
| 完整資料庫 | FULL=Y | FULL=Y |
| 指定 Schema | OWNER=... | SCHEMAS=... |
| 指定資料表 | TABLES=... | TABLES=... |
| 條件過濾 | QUERY=... | QUERY=... (支援子查詢) |
| 忽略錯誤 | IGNORE=Y | TABLE_EXISTS_ACTION=SKIP/APPEND/TRUNCATE/REPLACE |
| 跨 Schema 匯入 | FROMUSER/TOUSER | REMAP_SCHEMA=src:tgt |
| 跨表空間匯入 | 無 | REMAP_TABLESPACE=src:tgt |
| 平行處理 | 無 | PARALLEL=n |
注意事項
- exp/imp 需客戶端安裝 Oracle Client;expdp/impdp 需資料庫端建立目錄物件並授權。
- expdp/impdp 檔案生成於資料庫伺服器端,非客戶端。
- 跨版本匯入通常支援向上相容(如 11g dump 導入 19c),向下相容需使用
VERSION 參數。
- 大型資料庫建議使用 Data Pump 並開啟平行處理,大幅縮短時間。