首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle EXP/IMP 大量資料突破 2GB 限制與加速技巧

     編輯:Oracle 資料庫基礎

32 位元作業系統單一檔案上限 2GB,導致大型資料庫 EXP 產生的 .dmp 檔無法落地。本文整理 Unix/Linux 環境下突破檔案大小限制的三大技術,並介紹 EXPST/IMPST 直接路徑模式加速 30% 的實作步驟。

核心 Unix 工具介紹

  • Named Pipe (FIFO):記憶體中先進先出緩衝區,命令 mknod filename p 建立,實現進程間零拷貝傳遞。
  • dd:區塊級資料複製轉換,可從管道讀取寫入裝置/檔案。
  • compress / gzip:串流壓縮,大幅縮減落地體積。

三大突破 2GB 方案

方案一:管道 + 串流壓縮 (最推薦)

# 1. 建立管道
mknod /tmp/exp_pipe p

# 2. 背景啟動壓縮進程:讀管道 → 壓縮 → 寫磁碟
compress < /tmp/exp_pipe > /backup/export.dmp.Z &

# 3. 前景執行 EXP 寫入管道
exp file=/tmp/exp_pipe [其他參數]

IMP 時反向操作:zcat /backup/export.dmp.Z | imp file=/tmp/imp_pipe ...

方案二:直接寫入磁帶裝置

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

VOLSIZE 參數指定單卷容量,支援多卷自動切換,繞過檔案系統限制。

方案三:直接寫入裸裝置

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

繞過檔案系統直接操作區塊裝置,效能最佳但管理較複雜。

加速匯出匯入:EXPST/IMPST 直接路徑模式

Oracle 7.3+ 提供 DIRECT=Y 參數跳過 SQL 層直接讀取資料塊,但官方建議編譯專用執行檔 expst/impst (Single-Task 模式) 可再省 30% 時間。

編譯步驟 (需關閉資料庫、獨佔模式)

cd $ORACLE_HOME/rdbms/lib
make -f ins_rdbms.mk expst   # 產生 expst
make -f ins_rdbms.mk impst   # 產生 impst

⚠️ 極度重要:使用 expst/impst 期間,絕對不能有任何其他使用者連線資料庫,否則會導致資料庫損壞。僅限獨佔維護窗口使用。

實務建議總結

需求推薦方案注意事項
突破 2GB、最通用管道 + gzip 壓縮需足夠暫存空間給壓縮檔
備份到磁帶庫直接寫磁帶 + VOLSIZE磁帶裝置需支援大卷
極致效能、獨佔窗口裸裝置 + EXPST/IMPST嚴禁並發存取,風險最高

依據維護窗口、硬體資源、人員技能選擇最適組合,並務必在非生產環境完整演練後再上線。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved