1、字符集概述
-
Oracle語言環(huán)境的描述包括三部分:language、territory、characterset(語言、地域、字符集)
-
language:主要指定服務器消息的語言,提示信息顯示中文還是英文
-
territory:主要指定服務器的數(shù)字和日期的格式
-
characterset:是指字符集,一般國內(nèi)數(shù)據(jù)庫實際使用的字符集主要是ZHS16GBK、AL32UTF8
-
只要兩個數(shù)據(jù)庫的字符集(characterset)一樣,就可以相互導入導出數(shù)據(jù)
2、查詢Oracle字符集
2.1、查詢服務端字符集
NLS_NCHAR_CHARACTERSET 為國家字符集,主要是NCHAR、 NVARCHAR2 、NCLOB數(shù)據(jù)類型使用的字符集,一般是不用這幾種數(shù)據(jù)類型的
select * from nls_database_parameters;
2.2、查詢客戶端字符集
2.2.1、方式一
select * from nls_session_parameters;
2.2.2、方式二
select userenv('language') from dual;
3、修改Oracle字符集
-
一般來說,除非萬不得已,我們不建議修改oracle數(shù)據(jù)庫server端的字符集
-
如果需要修改字符集,通常需要導出數(shù)據(jù)庫數(shù)據(jù),重建數(shù)據(jù)庫,再導入數(shù)據(jù)庫數(shù)據(jù)的方式來轉(zhuǎn)換
-
也可以通過ALTER DATABASE CHARACTER SET語句修改字符集,但創(chuàng)建數(shù)據(jù)庫后修改字符集是有限制的
-
只有新的字符集是當前字符集的超集時才能修改數(shù)據(jù)庫字符集,
例如UTF8是US7ASCII的超集,修改數(shù)據(jù)庫字符集可使用ALTER DATABASE CHARACTER SET UTF8 -
如果想跳過超集的檢查,則需要加INTERNAL_USE 關(guān)鍵字
ALTER DATABASE CHARACTER SET INTERNAL_USE UTF8;
下面為修改字符集的步驟:
3.1、以sysdba角色連接到本地Oracle數(shù)據(jù)庫
sqlplus / as sysdba
3.2、以sysdba角色連接到Oracle數(shù)據(jù)庫實例
connect sys as sysdba;
3.3、開啟"限制會話"模式以阻止新的會話連接到數(shù)據(jù)庫
ALTER SYSTEM ENABLE RESTRICTED SESSION;
3.4、修改數(shù)據(jù)庫字符集為ZHS16GBK
注意:執(zhí)行該步驟時,需要關(guān)閉數(shù)據(jù)庫的其他會話,否則會報錯“ORA-12721:當其他會話處于活動狀態(tài)時,無法執(zhí)行操作”
ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;
3.5、查詢數(shù)據(jù)庫字符集的設置值
SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER = 'NLS_CHARACTERSET';
3.6、關(guān)閉"限制會話"模式以允許新的會話連接到數(shù)據(jù)庫
ALTER SYSTEM DISABLE RESTRICTED SESSION;
本文參考
https://www.cnblogs.com/JennyYu/p/16241585.html文章來源:http://www.zghlxwxcb.cn/news/detail-666391.html
https://blog.csdn.net/QAQiiii/article/details/131412990文章來源地址http://www.zghlxwxcb.cn/news/detail-666391.html
到了這里,關(guān)于Oracle數(shù)據(jù)庫字符集概述及修改方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!