Oracle 字符集的查看與修改

Oracle裏有三個字符集
數據庫字符集:
查詢方法

select * from nls_database_parameters where parameter in ('NLS_LANGUAGE','NLS_TERRITORY','NLS_CHARACTERSET');

客戶端字符集:
查詢方法

select * from nls_instance_parameters where parameter in ('NLS_LANGUAGE','NLS_TERRITORY','NLS_CHARACTERSET');

會話字符集:
查詢方法

 select * from nls_session_parameters where parameter in ('NLS_LANGUAGE','NLS_TERRITORY','NLS_CHARACTERSET');

NLS_LANG參數格式
NLS_LANG=language_territory.client character set
Language: 顯示oracle消息,校驗,日期命名
Territory:指定默認日期、數字、貨幣等格式
Client character set:指定客戶端將使用的字符集
例如:NLS_LANG=AMERICAN_AMERICA.US7ASCII
AMERICAN是語言,AMERICA是地區,US7ASCII是客戶端字符集

數據庫字符集是創建數據庫時指定的,後期雖然可以修改,有限制,極不推薦修改。該字符集主要是來控制數據的。

客戶端字符集,依然沒有發現有什麼用途,如果有了解的朋友建議回覆。該字符集設置在spfile文件中,與環境等等無關。該字符集可以通過Oracle參數修改。

會話字符集,該字符集默認是繼承客戶端字符集的。如果環境變量中有設置,會覆蓋默認字符集。

經過實驗驗證,在安裝Oracle的設備上,只要數據庫字符集與會話字符集相同,SQLPLUS查詢結果就不會亂碼。也不需要設置環境變量。

通常情況,三個字符集建議相同。

例如:
當創建數據庫的時候,國家選中國,語言選簡體中文,字符集選AL32UTF8。

SIMPLIFIED CHINESE_CHINA.AL32UTF8

數據庫字符集指定後,有DBA權限的同學,可以通過修改客戶端字符集,修改完成後,重啓數據庫,就可以應用。

alter system set nls_language=SIMPLIFIED CHINESE scope=spfile;
alter system set nls_territory=CHINA scope=spfile;

在設置了客戶端字符集之後,會話字符集默認繼承客戶端字符集,可以不用設置。但是工作中,往往數據庫是由其他朋友創建的,數據庫字符集和客戶端字符集不一樣,因此此時爲了能夠正常顯示,需要設置環境變量覆蓋會話字符集。

windows添加環境變量
變量名:NLS_LANG
變量值:AMERICAN_AMERICA.AL32UTF8

Linux
添加該段到Oracle用戶或者Root用戶的配置文件中。
例如,添加到oracle用戶的配置文件 /home/oracle/.bash_profile

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

接下來編譯一下

source /home/oracle/.bash_profile
發佈了7 篇原創文章 · 獲贊 0 · 訪問量 951
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章