首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Oracle EXP-00091 警告解決:NLS_LANG 字元集不匹配導出統計信息失敗

     編輯:MySQL 綜合教學

Oracle EXP-00091 警告解決:NLS_LANG 字元集不匹配導出統計信息失敗

使用 exp 導出時出現 EXP-00091: Exporting questionable statistics,原因是客戶端環境變數 NLS_LANG 與資料庫字元集 NLS_CHARACTERSET 不一致,導致統計信息導出時字元集轉換異常。

現場重現

$ echo $NLS_LANG
AMERICAN
SQL> SELECT parameter, value FROM nls_database_parameters WHERE parameter LIKE '%CHARACTERSET%';
PARAMETER                   VALUE
--------------------------- ------------------------------
NLS_CHARACTERSET            ZHS16GBK
NLS_NCHAR_CHARACTERSET      AL16UTF16

客戶端為 AMERICAN(隱含 US7ASCII),資料庫為 ZHS16GBK,導出時提示 server uses ZHS16GBK character set (possible charset conversion) 並產生警告。

解決方案一:統一 NLS_LANG(推薦)

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
# 或寫入 ~/.bash_profile 永久生效

再次導出,日誌顯示 Export terminated successfully without warnings。

解決方案二:跳過統計信息導出

exp ... statistics=none

不導出統計信息,避開字元集轉換,同樣無警告完成。缺點是目標庫匯入後需重新收集統計信息 (DBMS_STATS)。

最佳實踐建議

  • 客戶端 NLS_LANG 永久設定為與資料庫 NLS_CHARACTERSET 一致。
  • Data Pump (expdp/impdp) 為服務端操作,不受客戶端 NLS_LANG 影響,建議新專案改用 Data Pump。
  • 跨字元集遷移時,務必先驗證目標庫字元集支援源資料所有字符,避免資料截斷或亂碼。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved