exp命令優化與常見問題

  *  常規路徑(Conventional path)

     常規路徑導出是exp默認的導出方式,在這種方式下,exp要處理的數據需要經過sql select語句的方式提取,將數據讀取到緩存池,經由Evaluating Buffer 處理後返回到EXport客戶端,最後才被寫入Dump文件。

    前面的實驗都是基於常規路徑操作,對於大數據量下常規路徑的導出,要提高處理速度,最重要的參數是BUFFER。該參數用來指定執行導出時,處理數據所用的緩存區大小,以字節爲單位。這個參數變相用來控制導出時記錄數組單次最大能加載的記錄數。

   緩存區大小與加載記錄數之間可以通過下列公式換算:

   緩存區大小=紀錄數組大小* 記錄行最大長度

 exp test/test123 compress=n buffer=1024000 file=2012track.dmp tables=track log=2012track.log

 增加buffer參數會大大加快導出速度,但並不是buffer參數越大越好,當buffer參數增大到一定大小時,如果再增加對導出數據的時間是沒影響的。

 

  *  直接路徑(Direct Path)

直接路徑導出使用,在exp中添加參數direct=y即可,該參數值默認爲n。同時還有另一參數值對直接路徑導出有影響的:recordlength,該參數用來指定export的I/O buffer,以字節爲單位,最大不超過65535,一般執行直接路徑導出時,建議直接將recordlength參數值設置爲65535,以下實驗:

exp test/tet123 compress=n direct=y recordlength=65535 file=2012track.dmp tables=track log=2012track.log 

導出的速度比常規路徑快很多,但跟加buffer差不多

 

注意:導出時提示EXP-00091錯誤
處理方法一

查看DB中的NLS_CHARACTERSET的值(提供兩種方法):
select * from nls_database_parameters t where t.parameter='NLS_CHARACTERSET'
or
select * from v$nls_parameters  where parameter='NLS_CHARACTERSET';
SQL> select * from v$nls_parameters where parameter='NLS_CHARACTERSET';
PARAMETER          VALUE
-----------------------  -------------------------
---------------------
NLS_CHARACTERSET    ZHT16BIG5

根據查出的NLS_CHARACTERSET(ZHT16BIG5)來設定exp的環境變量:
 
WINNT> set NLS_LANG=AMERICAN_AMERICA.ZHT16BIG5
LINUX> export NLS_LANG=AMERICAN_AMERICA.ZHT16BIG5

處理方法二

在exp後加statistics=none

發佈了46 篇原創文章 · 獲贊 7 · 訪問量 29萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章