[轉] 關於oracle 字元集(NLS_LANGUAGE)問題的探討

來源:互聯網
上載者:User

標籤:style   color   io   檔案   資料   for   art   ar   


關於oracle 字元集(NLS_LANGUAGE)問題的探討
--------------------------------------------------------------------------------
nls_database_parameters、nls_instance_parameters、nls_session_parameters
--------------------------------------------------------------------------------


今天,在網上搜尋關於nls視圖的相關內容,結果越查越糊塗,無奈下,還是自己動手做一下。

首先,我們看一下,這三個視圖的sql定義:

sys> select view_name,text from dba_views where view_name like ‘NLS%‘; 
     
VIEW_NAME                             TEXT 
------------------------- -------------------------------------------------- 
NLS_SESSION_PARAMETERS    select substr(parameter, 1, 30),  
                                                      substr(value, 1, 40)  
                                               from v$nls_parameters  
                                               where parameter != ‘NLS_CHARACTERSET‘ and  
                                               parameter != ‘NLS_NCHAR_CHARACTERSET‘
     
NLS_INSTANCE_PARAMETERS   select substr(upper(name), 1, 30),  
                                                      substr(value, 1, 40)  
                                               from v$system_parameter  
                                               where name like ‘nls%‘
     
     
VIEW_NAME                               TEXT 
------------------------- -------------------------------------------------- 
NLS_DATABASE_PARAMETERS   select name,  
                                                 substr(value$, 1, 40)  
                                               from props$  
                                               where name like ‘NLS%‘

可以看出:

nls_database_parameters取值於props$, 即我們建立資料庫時儲存在資料庫中的資訊,這與環境變數和參數檔案等是統統沒有關係的。

nls_instance_parameters取值於v$system_parameter,下面讓我們看一下v$system_parameter 在官方文檔的定義:

V$SYSTEM_PARAMETER displays information about the initialization parameters that are currently in effect for the instance.

A new session inherits parameter values from the instance-wide values.

從這裡,我們可知,nls_instance_parameters的值有參數檔案決定,那麼會不會受到環境變數的影響哪?

 

經驗證,是不會的!過程如下:

 

首先,我們來看一下NLS_LANGUAGE的取值

sys>select parameter,value from nls_instance_parameters where parameter=‘NLS_LANGUAGE‘; 
     
PARAMETER                     VALUE 
------------------------------ ------------------------------ 
NLS_LANGUAGE               SIMPLIFIED CHINESE

 

關閉資料庫,然後修改環境變數NLS_LANG:

sys>shutdown immediate 

sys>exit  
 
[[email protected] ~]$ vi .bash_profile 
[[email protected] ~]$ . .bash_profile 
[[email protected] ~]$ set | grep NLS 
NLS_DATE_FORMAT=‘YYYY-MM-DD HH24:MI:SS‘
NLS_LANG=AMERICAN_AMERICA.AL32UTF8

[[email protected] ~]$ sqlplus / as sysdba  
     
SQL> startup  

SQL> select parameter,value from nls_instance_parameters where parameter=‘NLS_LANGUAGE‘; 
     
PARAMETER                     VALUE 
------------------------------ ------------------------------ 
NLS_LANGUAGE               SIMPLIFIED CHINESE

 

可見,nls_instance_parameters只受參數檔案的影響,而不受環境變數影響。

nls_session_parameters取值於V$NLS_PARAMETERS, 它的查詢結果預設會從nls_instance_parameters繼承,但是如果,我們在環境變數或者

通過ALTER SESSION 改變了nls的相關參數,則會覆蓋預設值。

 

例如,當環境變數NLS_LANG=AMERICAN_AMERICA.AL32UTF8

SQL> select parameter,value from nls_session_parameters where parameter=‘NLS_LANGUAGE‘; 
     
PARAMETER                     VALUE 
------------------------------ ------------------------------ 
NLS_LANGUAGE               AMERICAN

 

當環境變數NLS_LANG=‘SIMPLIFIED CHINESE_CHINA.AL32UTF8‘

SQL> select parameter,value from nls_session_parameters where parameter=‘NLS_LANGUAGE‘; 
     
PARAMETER                     VALUE 
------------------------------ ------------------------------ 
NLS_LANGUAGE               SIMPLIFIED CHINESE

 

 

來源: csdn   易點   

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.