Oracle 熱備份匯出 (exp) 在 Linux 環境的標準用法與管道壓縮技巧。
exp userid/password@service_name \
file=/path/to/dumpfile.dmp \
log=/path/to/export.log \
full=y
exp system/manager@orcl \
file=/backup/exp_full_$(date +%Y%m%d).dmp \
log=/backup/exp_full_$(date +%Y%m%d).log \
full=y
# 1. 建立命名管道 mknod /tmp/exp_pipe p ls -l /tmp/exp_pipe # 2. 背景啟動壓縮進程讀取管道 gzip < /tmp/exp_pipe > /backup/exp_full_$(date +%Y%m%d).dmp.gz & # 3. exp 寫入管道 (file 參數指向管道) exp system/manager@orcl file=/tmp/exp_pipe full=y # 4. 等待 exp 結束,壓縮進程自動完成 wait
| 參數 | 說明 |
|---|---|
| owner=scott | 僅匯出特定 Schema |
| tables=emp,dept | 僅匯出指定資料表 |
| query="WHERE created > SYSDATE-30" | 條件式匯出 (需雙引號) |
| consistent=y | 確保交易一致性視圖 (可能增加 Undo 壓力) |
| compress=n | 不合併 Extents (預設 y 會合併) |
將上述指令寫入 Shell 腳本,配合 crontab 定時執行;匯出完成後可透過 scp/rsync 異地備份。
注意:Oracle 10g+ 推薦使用 Data Pump (expdp/impdp) 取代傳統 exp/imp,效能更強、功能更豐富 (並行、網路模式、細粒度物件過濾等)。