標籤:style color 使用 io 檔案 資料 for art
NLS_LANG參數格式
NLS_LANG=<language>_<territory>.<client character set>
Language:顯示oracle訊息,校正,日期命名
Territory:指定預設日期、數字、貨幣等格式
Client character set:指定用戶端將使用的字元集
例如:NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
AMERICAN是語言,AMERICA是地區,ZHS16GBK是用戶端字元集
1. 查看伺服器端字元集:
視圖 "nls_database_parameters" 來源於props$,是表示資料庫的字元集。 props$是建立資料庫時儲存在資料庫中的資訊。
select * from nls_database_parameters where parameter in (‘NLS_LANGUAGE‘,‘NLS_TERRITORY‘,‘NLS_CHARACTERSET‘);
select userenv(‘language‘) from dual;
// 樣本
SQL> select userenv(‘language‘) from dual;
USERENV(‘LANGUAGE‘)
----------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
SQL>
2. 查看執行個體字元集:
視圖 "nls_instance_parameters" 來源於v$nls_parameters,表示會話自己的設定,可能是會話的環境變數或者是alter session完成,如果會話沒有特殊的設定,將與nls_instance_parameters一致。
select * from nls_instance_parameters where parameter in (‘NLS_LANGUAGE‘,‘NLS_TERRITORY‘,‘NLS_CHARACTERSET‘);
視圖 "nls_instance_parameters" 由參數檔案決定,只受參數檔案的影響,而不受環境變數影響。
3. 查看會話字元集:
select * from nls_session_parameters where parameter in (‘NLS_LANGUAGE‘,‘NLS_TERRITORY‘,‘NLS_CHARACTERSET‘) ;
select * from v$nls_parameters where parameter in (‘NLS_LANGUAGE‘,‘NLS_TERRITORY‘,‘NLS_CHARACTERSET‘) ;
視圖 "nls_session_parameters" 取值與V$NLS_PARAMETERS,它的查詢結果預設會從nls_instance_parameters繼承
但是如果,我們在環境變數或者通過ALTER SESSION 改變了nls的相關參數,則會覆蓋預設值。
// 設定
alter session set NLS_LANGUAGE=AMERICAN ;
alter session set NLS_LANGUAGE="SIMPLIFIED CHINESE" ;
// 樣本
SQL> col value format a30
SQL> col parameter format a30
SQL> select * from v$nls_parameters;
PARAMETER VALUE
------------------------------ ------------------------------
NLS_LANGUAGE SIMPLIFIED CHINESE <====語言
NLS_TERRITORY CHINA <====地區
NLS_CURRENCY ¥
NLS_ISO_CURRENCY CHINA
NLS_NUMERIC_CHARACTERS .,
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE SIMPLIFIED CHINESE
NLS_CHARACTERSET ZHS16GBK <====資料庫字元集 (此參數須與伺服器字元集一致)
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
PARAMETER VALUE
------------------------------ ------------------------------
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY ¥
NLS_NCHAR_CHARACTERSET AL16UTF16 <====國家字元集
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
已選擇19行。
SQL>
4. 查看用戶端字元集
windows: start --> run --> regedit --> Ctrl+F --> NLS_LANG
unix: echo $NLS_LANG
// 設定用戶端字元集
windows平台下
C:\> set nls_lang=AMERICAN_AMERICA.ZHS16GBK
這樣就隻影響這個視窗裡面的環境變數。
或者,修改註冊表裡面相應OracleHome的NLS_LANG的值為SIMPLIFIED CHINESE_CHINA.ZHS16GBK,可以永久生效。
unix平台下,就是環境變數NLS_LANG。
$export $NLS_LANG="AMERICAN_AMERICA"."ZHS16GBK"
如果檢查的結果發現server端與client端字元集不一致,請統一修改為同server端相同的字元集。