首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle Exp/Imp 大量資料應對:突破 2GB 限制與縮短導出時間

     編輯:Oracle 資料庫相關知識

雙重挑戰

  1. 檔案大小限制:32 位 OS 單檔上限 2 GB,大型資料庫 DMP 輕易超過。
  2. 導出耗時:資料量增長導出時間線性增長,難以在維護窗口完成。

突破 2GB:三大 Unix 技術組合

1. Named Pipe(命名管道)+ Compress 壓縮

# 建立管道
mknod /tmp/exp_pipe p
# 啟動壓縮進程,從管道讀取並寫入壓縮檔
compress < /tmp/exp_pipe > export.dmp.Z &
# exp 寫入管道
exp file=/tmp/exp_pipe ... &

管道驻留記憶體,繞過檔案系統大小限制;壓縮可將 DMP 體積降低 60-80%。

2. 直接導出至磁帶裝置

exp file=/dev/rmt/0m volsize=4G
imp file=/dev/rmt/0m volsize=4G

volsize 指定卷大小,支援多卷自動切換。

3. 導出至裸裝置

exp file=/dev/rdsk/c0t3d0s0 volsize=4G

繞過檔案系統,直接寫入區塊裝置。

縮短導出時間:綜合優化策略

管道 + 壓縮 + 磁帶(推薦生產組合)

mknod /tmp/exp_pipe p
compress < /tmp/exp_pipe | dd of=/dev/rmt/0m obs=64k &
exp file=/tmp/exp_pipe ... &

邊導出、邊壓縮、邊寫帶,磁帶寫入量大幅減少,I/O 時間顯著降低。

Direct Path Export(Oracle 7.3+)

繞過 SQL 層直接讀取資料塊,效能提升 30%+。需重新連結專用執行檔:

make -f $ORACLE_HOME/rdbms/lib/oracle.mk expst
make -f $ORACLE_HOME/rdbms/lib/oracle.mk impst

嚴重警告:使用 expst/impst 期間絕對不能有其他用戶連線資料庫,否則可能導致資料庫損壞。

實務建議清單

  • 先用 dd if=/tmp/exp_pipe of=/dev/null 預估 DMP 大小(以 512-byte block 為單位)。
  • 生產環境優先「管道+壓縮+磁帶」組合,兼顧空間與速度。
  • 若資料庫極大(TB 級),評估 RMAN 增量備份 + Data Guard 替代 EXP/IMP。
  • 導出前檢查磁帶機狀態、清潔磁頭、驗證磁帶容量。
  • 導出後務必 imp SHOW=Y 驗證 DMP 完整性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved