EXP-00091-錯誤解決
阿新 • • 發佈:2018-12-18
今天使用Oracle exp命令的時候無意中發現一個錯誤“EXP-00091”,以前也遇到過,只是沒有在意,因為“EXP-00091”雖然是個錯誤,但並沒有影響匯入的結果。說起這個“EXP-00091”錯誤,還是筆者在給同事演示匯入的時候發現的。。。。,當時從一個linux的機器上匯出dmp檔案,然後從另一臺機器上匯入這個檔案,結果就報了一堆“EXP-00091”錯誤。。。,但後來觀察資料庫並沒有資料異常或者亂碼,因此就沒深究。今天同事使用我的備份指令碼的時候也發現了這個問題,於是深究下為什麼。
通過一翻google後發現,“EXP-00091”問題是exp工具所在的環境變數中的NLS_LANG與DB中的NLS_CHARACTERSET不一致導致的。看看我的指令碼第一句:
- //設定環境變數為“SIMPLIFIED CHINESE_CHINA.AL32UTF8”
- export NLS_LANG='SIMPLIFIED CHINESE_CHINA.AL32UTF8';
那資料庫中的NLS_LANG是什麼呢?
執行結果:
- SQL>select userenv('language') from dual;
- USERENV('LANGUAGE')
- ----------------------------------------------------
- AMERICAN_AMERICA.ZHS16GBK
原來我的Oracle用的是”AMERICAN_AMERICA.ZHS16GBK”,果然是不一致,那就改變下備份指令碼吧。
直接修改為:
- export NLS_LANG='AMERICAN_AMERICA.ZHS16GBK'
然後執行exp,錯誤不見了。該方法經測試匯入資料庫一切正常。至此EXP-00091問題,徹底解決。
注意:資料庫版本 Oracle 10g XE