1. 程式人生 > >EXP-00091-錯誤解決

EXP-00091-錯誤解決

今天使用Oracle exp命令的時候無意中發現一個錯誤“EXP-00091”,以前也遇到過,只是沒有在意,因為“EXP-00091”雖然是個錯誤,但並沒有影響匯入的結果。說起這個“EXP-00091”錯誤,還是筆者在給同事演示匯入的時候發現的。。。。,當時從一個linux的機器上匯出dmp檔案,然後從另一臺機器上匯入這個檔案,結果就報了一堆“EXP-00091”錯誤。。。,但後來觀察資料庫並沒有資料異常或者亂碼,因此就沒深究。今天同事使用我的備份指令碼的時候也發現了這個問題,於是深究下為什麼。
通過一翻google後發現,“EXP-00091”問題是exp工具所在的環境變數中的NLS_LANG與DB中的NLS_CHARACTERSET不一致導致的。看看我的指令碼第一句:

view plain copy to clipboard print ?
  1. //設定環境變數為“SIMPLIFIED CHINESE_CHINA.AL32UTF8”  
  2. export NLS_LANG='SIMPLIFIED CHINESE_CHINA.AL32UTF8';  

那資料庫中的NLS_LANG是什麼呢?
執行結果:

view plain copy to clipboard
print ?
  1. SQL>select userenv('language') from dual;  
  2.   
  3. USERENV('LANGUAGE')  
  4. ----------------------------------------------------  
  5. AMERICAN_AMERICA.ZHS16GBK  

原來我的Oracle用的是”AMERICAN_AMERICA.ZHS16GBK”,果然是不一致,那就改變下備份指令碼吧。
直接修改為:

view plain copy to clipboard print ?
  1. export NLS_LANG='AMERICAN_AMERICA.ZHS16GBK'  

然後執行exp,錯誤不見了。該方法經測試匯入資料庫一切正常。至此EXP-00091問題,徹底解決。
注意:資料庫版本 Oracle 10g XE