Oracle數(shù)據(jù)庫字符集進行轉(zhuǎn)換的竅門
我們都知道在大型的數(shù)據(jù)庫管理系統(tǒng)里,Oracle數(shù)據(jù)庫不論是在數(shù)據(jù)庫管理能力上還是安全性等相關(guān)方面的作用皆是有目共睹的。國內(nèi)企業(yè)使用Oracle數(shù)據(jù)庫的也較多,但是由于Oracle不同版本的字符集,給數(shù)據(jù)顯示、數(shù)據(jù)備份、數(shù)據(jù)轉(zhuǎn)換等實際工作帶來了不少麻煩。
一、字符集參數(shù)
一旦數(shù)據(jù)庫創(chuàng)建后,數(shù)據(jù)庫的字符集是不能改變的。因此,考慮使用哪一種字符集是十分重要的。Oracle數(shù)據(jù)庫字符集應(yīng)該是操作系統(tǒng)本地字符集的一個超集。存取數(shù)據(jù)庫的客戶使用的字符集將決定選擇哪一個超集,即數(shù)據(jù)庫字符集應(yīng)該是所有客戶字符集的超集。
下面介紹一些與字符集有關(guān)的NLS_LANG參數(shù):
NLS_LANG格式:
- NLS_LANG=language_territory.charset
有三個組成部分(語言、地域和字符集),每個組成成分控制了NLS子集的特性。三個成分可以任意組合,例如:
- AMERICAN_AMERICA.US7SCII
- JPANESE_JAPAN.JA16EUC
其中:language 指定服務(wù)器消息的語言。
territory 指定服務(wù)器的日期和數(shù)字格式。
Charset 指定字符集
還有一些子集可以更明確定義NLS_LANG參數(shù):
NLS_DATE_FORMAT 缺省的日期格式
NLS_DATE_LANGUAGE 缺省的日期語言
NLS_NUMBERIC_CHARACTERS 小數(shù)字符和組分隔開
NLS_CURRENCY 本地貨幣字符
NLS_ISO_CURRENCY ISO貨幣字符
NLS_SORT 字符排序序列
二、字符集轉(zhuǎn)換
1、NLS_LANG參數(shù)的修改方法:
1)用SYS用戶名登陸Oracle。
2)查看字符集內(nèi)容
- SQL>SELECT * FROM PROPS$;
3)修改相應(yīng)的字符子集
- SQL>UPDATE PROPS$ SET VALUE$=’SIMPLIFIED CHINESE ‘
- WHERE NAME=’NLS_LANGUAGE’;
4) 遞交COMMIT;
2、NLS_LANG參數(shù)的具體應(yīng)用:
1)采用服務(wù)器端/客戶端方式,兩端字符集不同
修改客戶端字符集:
WIN95/WIN98:修改注冊表
- HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\NLS_LANG
UNIX:按照1方法,直接進入Oracle 修改。
2)不同字符集使用EXP/IMP命令
按照1方法,修改IMP端的字符集設(shè)置,如果是WIN98/WIN95系統(tǒng),還必須修改注冊表。注意:NLS_LANG三個子集的參數(shù)必須一致。另外,如果字符集單雙字節(jié)設(shè)置不同,則不能通過修改字符集進行轉(zhuǎn)換。可以使用其他方式,不修改字符集,進行Oracle數(shù)據(jù)庫搬移,如數(shù)據(jù)量比較小,可以使用SQLLOAD命令,通過文本文件轉(zhuǎn)換;使用其他Oracle數(shù)據(jù)庫軟件(ACCESS,FOXPRO等)轉(zhuǎn)換。
【編輯推薦】