雖然 Oracle 官方已推薦使用 Data Pump (expdp/impdp) 取代傳統 exp/imp,但在舊版本環境、跨版本遷移或簡單邏輯備份場景下,exp/imp 仍具不可替代的輕量優勢。本文詳細說明四種導出模式、實戰命令範例、直接路徑優化、導入順序與常見坑點。
| 模式 | 適用場景 | 典型權限需求 |
|---|---|---|
| 表模式 | 導出指定用戶下的特定表 | 表擁有者或 DBA |
| 用戶模式 | 導出某用戶所有對象 | 用戶自身或 DBA |
| 資料庫模式 | 導出全庫對象 | 需 exp_full_database 權限 |
| 可傳輸表空間 | 導出整個表空間 | DBA |
# 1. 表模式 exp doiido/doiido file=doiido.dmp tables=(doiido,boy) log=doiido.log # 2. 用戶模式 exp doiido/doiido@doiido file=doiido.dmp owner=doiido log=doiido.log # 3. 全庫模式 grant exp_full_database to doiido; exp doiido/doiido file=doiido.dmp full=y log=doiido.log # 4. 表空間模式 exp system/doiido@orcl file=doiido.dmp tablespaces=(doiido) # 5. Windows 遠端導出 exp doiido/doiido@192.168.100.200:1521/doiido file=d:\doiido.dmp tables=boy log=d:\doiido.log
direct=y 繞過 SQL 層直接讀取數據塊,大幅提升導出速度,但有觸發器、外鍵等限制。imp 導入遵循固定順序:建表結構 → 載入數據 → 建索引 → 導入觸發器 → 啟用約束 → 建位圖/函數索引。若目標表已存在,加上 ignore=y 可跳過建表錯誤直接追加數據。
fromuser=src touser=tgt,但前提是目標端已存在同名表空間。