天天看點

oracle資料庫的字元集

一、oracle資料庫的字元集

1、資料庫字元集、會話字元集、用戶端字元集等概念

NLS_DATABASE_PARAMETERS lists permanent NLS parameters of the database.  ##資料庫字元集,建立資料庫時指定的,不建議做修改

V$NLS_PARAMETERS contains current values of NLS parameters.  ##目前會話字元集

1.1、資料庫字元集

資料庫字元集概念:資料庫字元集包括兩個字元集:資料庫字元集、國家字元集,都是在建立資料庫的時候指定

檢視資料庫字元集:

oracle資料庫的字元集

1.2、會話字元集

會話字元集概念:目前會話的字元集,sqlplus會讀取os環境變量nls_lang的值,是以受用戶端nls_lang的控制,是以沒有特殊設定,将與nls_instance_parameters一緻。可通過環境變量或alter session進行修改

oracle資料庫的字元集

1.3、用戶端字元集

用戶端字元集概念:NLS_LANG 參數定義用戶端的字元編碼方案。

在用戶端,通過設定環境變量來定義用戶端的字元集。該環境變量為如下定義:NLS_LANG=<language>_<territory>.<client character set>

<language>:用來顯示Oracle消息、年月的名稱(例如12月是應該顯示“Dec”還是“12月”)以及預設的排序機制,對應伺服器的初始化參數為NLS_LANGUAGE

<territory>:用來顯示預設的日期格式、數字格式、以及貨币格式等,對應伺服器的初始化參數為NLS_TERRITORY。

<client character set>:用戶端使用的字元集

oracle資料庫的字元集
oracle資料庫的字元集

2、如何設定正确實用的字元集?

不同的客戶機可以使用不同的編碼方案。客戶機與伺服器之間傳遞的資料可以在兩種編碼方案之間自動轉換。資料庫的編碼方案應該是所有客戶機編碼方案的超集,或者與所有客戶機編碼方案等同。

3、修改nls_lang,進而顯示中文的oracle消息

3.1、改變nls_lang的值之後,登入時,就會顯示中文的日期

oracle資料庫的字元集

會話的nls_language等會立刻發生變化,但是nls_instance_parameter的lang_language沒有發生變化

oracle資料庫的字元集

重新開機資料庫,nls_instance_parameter的值仍然沒有改變

SQL> startup open;

ORACLE 例程已經啟動。 Total System Global Area  534462464 bytes

Fixed Size                  2215064 bytes

Variable Size             247464808 bytes

Database Buffers          276824064 bytes

Redo Buffers                7958528 bytes

資料庫裝載完畢。

資料庫已經打開。

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

------------------------------------------------------------

VALUE

--------------------------------------------------------------------------------

NLS_LANGUAGE

AMERICAN NLS_TERRITORY

AMERICA