oracle 中exp備份優化

在工作中經常需要對oracle數據庫進行備份、異地恢復的情況。
 
Oracle的常規備份無非是exp/imp,expdp/impdp,rman三種方式。
  1. exp/imp簡單方便,適用於跨db版本、跨os平臺、異地備份等情況,是大家最常用的一種備份方式。
  2. expdp/impdp是10g以後推出的備份方式,其特點就是效率的大幅改善,據eygle報告,impdp相比與傳統imp有20倍速度提升,其最大的缺點是不能跨數據庫版本,連小版本號也不行(例如11.1到11.2)。
  3. rman相比前兩種備份方式,相對配置複雜,一般是DBA作爲前兩種方案的備份。

先看看exp/imp的用法:

1.基本的exp寫法

  1. exp userid/passwd@infodb81 file=user_$DATE.dmp log=user_$DATE.log
  2. user: oracle用戶名
  3. passwd:數據庫用戶密碼
  4. infodb81: 數據庫的連接字符串
  5. file:備份後的文件名
  6. log: 備份日誌文件

2.exp的參數

參數一:buffer
  1. exp userid/passwd@infodb81 file=user_$DATE.dmp log=user_$DATE.log buffer=4096000000

  2. 注意:buffer的單位是bytes,例如要設置1M,則是1024000,上面的例子設置的是400M。 
  3. 根據我們測試的結果,加入buffer參數後,約有40%的性能提升。

  4. 經過反覆驗證:合理的buffer值是10240000-1024000之間,再大了反而效率更低。 
    環境:aix 6.1 16c 32G,sga信息如下
    SQL> show sga
    Total System Global Area 2.0043E+10 bytes
    Fixed Size 2153336 bytes
    Variable Size 1.3690E+10 bytes
    Database Buffers 6174015488 bytes
    Redo Buffers 176394240 bytes

  5. 性能對比:
  6. 加入buffer參數前(數據約9G,共31分鐘) 
  7. ========== 備份用戶sinosybak 11-02-21 02:08:16 ====================
  8. ========== 備份用戶shyang 11-02-21 02:35:49 ====================
  9. 加入Buffer參數後(約18分鐘) 
  10. ========== 備份用戶sinosybak 11-02-28 02:25:04 ====================
  11. ========== 備份用戶shyang 11-02-28 02:43:52 ====================


參數二:direct
  1. exp userid/passwd@infodb81 file=user_$DATE.dmp log=user_$DATE.log direct=y recordlength=65536

  2. direct : 直接導出,數據從磁盤讀入到高速緩存,直接寫入到最終文件,所以沒有數據行檢查與匹配的過程。據不權威的評測結果,性能有50%到70%的提升。

    同樣的環境,實測結果,有70%的性能提升
    約70G數據,普通exp模式,未加buffer,約2小時40分 
    ========== 備份用戶sinosy 11-02-22 22:30:00 ====================
    ========== 開始傳輸sinosy 11-02-23 01:10:39 ====================
    exp buffer=102400000,約2小時 
    ========== 備份用戶sinosy 11-02-28 22:30:01 ====================
    ========== 開始傳輸sinosy 11-03-01 00:39:58 ====================
    exp direct模式,約1個小時
  3. ========== 備份用戶sinosy 11-03-01 22:30:00 ====================
    ========== 開始傳輸sinosy 11-03-01 23:05:43 ====================

  4. 注意:
  5. 1.recordlength參數(IO緩衝大小),與direct參數配對使用,默認該參數爲1024bytes,上面的例子爲64K(最大值也爲64K)。
  6. 2.使用direct後,buffer參數失效;
  7. 3.使用direct,不支持query子句(沒有行匹配的過程),不支持帶Blob類型字段的表,但是系統會自動判斷、自動切換,也就是說不會因爲一張表的問題,導致整個schema不能使用direct備份;
  8. 4.direct不支持表空間導出。

 

參數三:consistent

  1. exp userid/passwd@infodb81 file=user_$DATE.dmp log=user_$DATE.log consistent=y

  2. consistent : 交叉一致性,用在序列值小於表中最大值的情況。

  3. 例如:exp默認情況下,先導出序列,後導出表,如果序列導出之後,表又使用序列插入了新的數據,就會導致數據不一致。

其他參數:

  1. USERID 用戶名/口令
  2. FULL 導出整個文件 (N) BUFFER 數據緩衝區的大小
  3. OWNER 所有者用戶名列表
  4. FILE 輸出文件 (EXPDAT.DMP)
  5. TABLES 表名列表
  6. COMPRESS 導入一個範圍 (Y)
  7. RECORDLENGTH IO 記錄的長度
  8. GRANTS 導出權限 (Y)
  9. INCTYPE 增量導出類型
  10. INDEXES 導出索引 (Y)
  11. RECORD 跟蹤增量導出 (Y)
  12. ROWS 導出數據行 (Y)
  13. PARFILE 參數文件名
  14. CONSTRAINTS 導出限制 (Y)
  15. CONSISTENT 交叉表一致性
  16. LOG 屏幕輸出的日誌文件
  17. STATISTICS 分析對象 (ESTIMATE)
  18. DIRECT 直接路徑 (N)
  19. TRIGGERS 導出觸發器 (Y)
  20. FEEDBACK 顯示每 x 行 (0) 的進度
  21. FILESIZE 各轉儲文件的最大尺寸
  22. QUERY 選定導出表子集的子句
  23. 下列關鍵字僅用於可傳輸的表空間
  24. TRANSPORT_TABLESPACE 導出可傳輸的表空間元數據 (N)
  25. TABLESPACES 將傳輸的表空間列表


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章