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

Oracle Exp/Imp 工具效能調優全攻略:直接路徑、管道壓縮、參數調校與 MTS 大池優化

     編輯:Oracle 資料庫基礎

一、Export (Exp) 調優三大關鍵

1. 直接路徑模式 (DIRECT=Y)

  • 繞過 SQL 層,直接從資料塊讀取寫入 DMP,速度提升 **3-10 倍**。
  • 搭配 RECORDLENGTH=65535(64KB 最大 I/O 緩衝)。
  • 限制:8i 不支援字元集轉換、8.1.5 不支援 LOB、不可用 QUERY 參數。
exp userid=system/manager full=y direct=y recordlength=65535 file=exp_full.dmp log=exp_full.log

2. 管道技術:邊匯出邊壓縮,零落地空間佔用

# Unix/Linux
mknod /tmp/exp_pipe p
compress < /tmp/exp_pipe > export.dmp.Z &
exp file=/tmp/exp_pipe ...
  • 省去匯出後單獨壓縮的時間(10GB 檔案壓縮常需 30+ 分鐘)。
  • 網路傳輸前已壓縮,傳輸時間大幅縮減。

3. 並行匯出 (10g+ Data Pump expdp)

傳統 Exp 不支援並行,**強烈建議改用 Data Pump (expdp/impdp)** 並行度 PARALLEL=4 以上,效能指數級提升。

二、Import (Imp) 調優七大實戰技巧

技巧參數/作法效益適用場景
管道解壓縮mknod /tmp/imp_pipe p; uncompress < export.dmp.Z > /tmp/imp_pipe &; imp file=/tmp/imp_pipe省解壓時間、無臨時檔大檔案匯入
避開 I/O 尖峰非上班時間、停用批次 Job減少磁碟爭用生產環境緊急恢復
擴大排序區8i: sort_area_size 調大 5-10 倍;9i+: pga_aggregate_target 調至 1-2GB索引建立在記憶體排序,避免磁碟排序 (慢 14,000 倍)大表索引重建
調大 BUFFERBUFFER=10240000 (10MB)減少讀取 DMP 系統呼叫次數所有匯入
逐筆 CommitCOMMIT=Y減少 Undo 產生、避免長交易阻塞大量資料匯入
延後建立索引INDEXES=N 匯入資料 → 手動建索引或二次 INDEXES=Y ROWS=N匯入階段專注資料寫入,索引可平行建立超大表、維護窗口有限
MTS 大池調大共享伺服器模式下 LARGE_POOL_SIZE=150M避免 MTS 共用記憶體不足導致 Exp/Imp 失敗啟用 MTS 環境

三、分階段匯入腳本範例

# 階段 1:僅匯入資料
imp user2/pwd fromuser=user1 touser=user2 file=/tmp/imp_pipe \
    commit=y feedback=10000 buffer=10240000 ignore=y rows=y indexes=n

# 階段 2:僅匯入索引 (資料已存在)
imp user2/pwd fromuser=user1 touser=user2 file=/tmp/imp_index_pipe \
    commit=y feedback=10000 buffer=10240000 ignore=y rows=n indexes=y

四、檢測是否處於 MTS 模式

SQL> SELECT DISTINCT server FROM v$session;
-- 出現 SHARED 或 NONE 表示啟用 MTS

五、總結:Exp/Imp 已退役,Data Pump 才是正途

Oracle 10g 起推出 **Data Pump (expdp/impdp)**,支援並行、網路模式、互動式指令、細粒度物件過濾、壓縮/加密、可重啟作業。所有新專案**務必使用 Data Pump**,傳統 Exp/Imp 僅作為舊版本相容或極簡單匯出之用。

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