* 常規路徑(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