Oracle exp 導出工具支援三種操作模式:直接帶參數的命令列模式、非互動式命令列(腳本適用)、互動式逐步提示。本文以實戰範例完整示範三種模式的操作細節與適用場景。
-- 導出整個使用者所有物件
exp username/password file=username.dmp log=exp.log
-- 導出指定表
exp user/pwd@db tables=(pfdept,pfuser) file=D:/all.dmp grants=y
-- 導出表並加查詢條件(WHERE 子句)
exp user/pwd@db tables=pfdept query="where predeptid='0745'" file=D:/all.dmp
導出檔案預設位於 C:\Users\<電腦名>,可至該目錄取得 .dmp 與 .log:
將冗長參數寫入參數檔,命令列僅指定 parfile=xxx.par,避免命令列過長與密碼外露:
-- exp.par 內容範例
userid=user/pwd@db
file=D:/exp.dmp
log=D:/exp.log
tables=(emp,dept)
grants=y
indexes=y
constraints=y
-- 執行
exp parfile=exp.par
輸入 exp 後依提示輸入:
| 提示 | 範例輸入 | 說明 |
|---|---|---|
| Enter array fetch buffer size: 4096 > | (Enter) | 陣列提取緩衝區,預設 4096 |
| Export file: EXPDAT.DMP > | D:/a.dmp | 導出檔案路徑 |
| (2)U(sers), or (3)Tables: (2)U > | 3 | 選 3 導出表模式 |
| Export table data (yes/no): yes > | yes | 是否導出資料 |
| Compress extents (yes/no): yes > | (Enter) | 壓縮區段,預設 yes |
| Table (T) or Partition (T:P): (RETURN to quit) > | pfdept | 輸入表名,Enter 結束 |
執行過程畫面:
. . exporting table PFDEPT 83 rows exported
Export terminated successfully with warnings.
| 模式 | 優點 | 缺點 | 適用場景 |
|---|---|---|---|
| 命令列參數 | 簡潔、易寫入批次檔/Shell Script | 參數長時難維護、密碼可能外露在歷史指令 | 自動化備份腳本、簡單單表導出 |
| PARFILE 參數檔 | 參數集中管理、密碼可不寫在命令列、支援註解 | 需額外維護 .par 檔案 | 正式環境排程備份、複雜導出需求 |
| 互動式 | 無需記參數、即時確認每步設定 | 無法自動化、重複操作繁瑣 | 臨時一次性導出、新手學習、除錯參數 |
QUERY 參數支援 WHERE 條件,實現分區導出、條件式備份。DIRECT=Y 直接路徑導出大幅提升大表效能,但要求字符集一致。CONSISTENT=Y 確保導出資料的一致性(以導出開始時間點為準),避免導出過程中資料變更造成不一致。