Oracle數(shù)據(jù)庫字符集及修改方式詳解
1、字符集概述
Oracle語言環(huán)境的描述包括三部分:language、territory、characterset(語言、地域、字符集)
- language:主要指定服務(wù)器消息的語言,提示信息顯示中文還是英文
- territory:主要指定服務(wù)器的數(shù)字和日期的格式
- characterset:是指字符集,一般國內(nèi)數(shù)據(jù)庫實際使用的字符集主要是ZHS16GBK、AL32UTF8
只要兩個數(shù)據(jù)庫的字符集(characterset)一樣,就可以相互導(dǎo)入導(dǎo)出數(shù)據(jù)
2、查詢Oracle字符集
2.1、查詢服務(wù)端字符集

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端的字符集
- 如果需要修改字符集,通常需要導(dǎo)出數(shù)據(jù)庫數(shù)據(jù),重建數(shù)據(jù)庫,再導(dǎo)入數(shù)據(jù)庫數(shù)據(jù)的方式來轉(zhuǎn)換
- 也可以通過ALTER DATABASE CHARACTER SET語句修改字符集,但創(chuàng)建數(shù)據(jù)庫后修改字符集是有限制的
- 只有新的字符集是當(dāng)前字符集的超集時才能修改數(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:當(dāng)其他會話處于活動狀態(tài)時,無法執(zhí)行操作”
ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;
3.5、查詢數(shù)據(jù)庫字符集的設(shè)置值
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
https://blog.csdn.net/QAQiiii/article/details/131412990
到此這篇關(guān)于Oracle數(shù)據(jù)庫字符集概述及修改方式的文章就介紹到這了,更多相關(guān)Oracle數(shù)據(jù)庫字符集內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于Oracle listener日志解析利器的使用方法
這篇文章主要跟大家分享了關(guān)于Oracle listener日志解析利器的使用方法,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。2017-03-03
修改計算機名或IP后Oracle10g服務(wù)無法啟動的解決方法
修改計算機名或IP后Oracle10g無法啟動服務(wù)即windows服務(wù)中有一項oracle服務(wù)啟動不了,報錯,下面是具體的解決方法2014-01-01
解決navicat 鏈接oracle時出現(xiàn)的各種問題
這篇文章主要介紹了解決navicat 鏈接oracle時出現(xiàn)的各種問題,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-08-08
Oracle 左連接(+)加號用法及常用語法之間的關(guān)系
通過分析左連接(+)加號的寫法和一些常用語法之間的聯(lián)系,了解到Oracle 加號(+)的用法。本文重點給大家介紹Oracle 左連接(+)加號用法及常用語法之間的關(guān)系 ,感興趣的朋友跟隨小編一起看看吧2018-10-10
Oracle遷移PostgreSQL隱式類型轉(zhuǎn)換配置指南
Oracle遷移PostgreSQL時因類型差異易引發(fā)錯誤,需通過顯式/隱式類型轉(zhuǎn)換、轉(zhuǎn)換關(guān)系管理及沖突處理解決,并配合驗證測試確保數(shù)據(jù)一致性與遷移成功,所以本文給大家介紹了Oracle遷移PostgreSQL隱式類型轉(zhuǎn)換的配置指南,需要的朋友可以參考下2025-08-08
Oracle數(shù)據(jù)庫ORA-28040:沒有匹配的驗證協(xié)議解決辦法
這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫ORA-28040:沒有匹配的驗證協(xié)議問題的解決辦法,ORA-28040是Oracle數(shù)據(jù)庫的錯誤代碼,表示沒有匹配的驗證協(xié)議,這通常是由于客戶端和服務(wù)器之間的身份驗證協(xié)議不匹配導(dǎo)致的,需要的朋友可以參考下2024-03-03

