資料庫字元集包括兩個字元集:資料庫字元集和國家字元集,都是在建立資料庫的時候指定的。
SYS@orcl>col value for a30
SYS@orcl>select * from nls_database_parameters
2 where parameter in('NLS_CHARACTERSET','NLS_NCHAR_CHARACTERSET');
PARAMETER VALUE
------------------------------ ------------------------------
NLS_CHARACTERSET UTF8
NLS_NCHAR_CHARACTERSET AL16UTF16
參數NLS_CHARACTERSET說明資料庫字元集為UTF8,
參數NLS_NCHAR_CHARACTERSET說明國家字元集為AL16UTF16
在資料庫的mount狀态執行如下指令;
alter database character set utf8;
該指令不會對資料庫内部的字元集進行轉換,隻是修改資料庫中有關字元集的配置資訊,因為如果是嚴格的超集,那麼新的字元集對已有字元的編碼是一樣的,因些不需要改變。但是如果不是超集,則會報錯,就隻能以新的字元集重新建立資料庫。
Oracle提供了一個非公開的指令:
alter database character set internal_convert <NEW_CHARACTER_SET_NAME>
該指令會繞開超子集的校驗,而直接對字元集配置資訊進行修改。
在伺服器端有關語言由初始化參數NLS_LANGUAGE來配置。
SYS@orcl>show parameter nls_language;
NAME TYPE VALUE
------------------------------------ -----------------------------------------
nls_language string AMERICAN
SYS@orcl>show parameter nls_date_format;
nls_date_format string YYYY-MM-DD HH24:MI:SS
SYS@orcl>show parameter nls_sort
nls_sort string BINARY
SYS@orcl>show parameter nls_territory;
nls_territory string AMERICA
SYS@orcl>select distinct parameter from v$nls_valid_values;
PARAMETER
----------------------------------------------------------------
CHARACTERSET
SORT
TERRITORY
LANGUAGE
通過輸出知道資料字典v$nls_valid_values可以查詢以下參數的可用值:
CHARACTERSET(資料庫字元集)
SORT(排序方式)
TERRITORY(區域)
LANGUAGE(語言)
在用戶端,通過設定環境變量來定義用戶端的字元集。該環境變量為如下定義:
NLS_LANG=<language>_<territory>.<client character set>
1)<language>:用來顯示Oracle消息、年月的名稱(例如12月是應該顯示“Dec”還是“12月”),以及預設的排序機制。對應伺服器的初始化參數為NLS_LANGUAGE。
2)<terriory>:用來顯示預設的日期格式、數字格式,以及貨币格式等,對應伺服器的初始化參數為NLS_TERRITORY。
3)<client character set>:用戶端使用的字元集,對應伺服器的初始化參數為NLS_CHARACTERSET。
(1)在作業系統提示符下,将NLS_LANG變量設定為american_america.utf8,并且調整預設的日期顯示。
在Windows系統中可以使用如下所示的指令:
c:/>set NLS_LANG=american_america.utf8
c:/>set NLS_DATE_FORMAT=Day dd Month yyyy
或者在Unix系統中使用如下所示的指令:
export NLS_LANG=american_america.utf8
export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS '
(2)在同一個作業系統會話中啟動SQL*Plus,并且作為使用者SYSTEM進行連接配接。
(3)使用下面的指令顯示目前的日期:
select sysdate from dual;
SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------------------------
SIMPLIFIED CHINESE_CHINA.UTF8
SYS@orcl>select value from v$nls_valid_values whereparameter='LANGUAGE' ;
VALUE
------------------------------
AMERICAN
SYS@orcl>select value from v$nls_valid_values whereparameter='TERRITORY';
AMERICA
SYS@orcl>select value from v$nls_valid_values whereparameter='CHARACTERSET';
select * from nls_database_parameters
select * from nls_instance_parameters
select* from nls_session_parameters
本文轉自 corasql 51CTO部落格,原文連結:http://blog.51cto.com/corasql/1700676,如需轉載請自行聯系原作者