新聞中心
深入Oracle字符集的查看與修改詳解?
oracle服務器和客戶端字符集的查看和修改

一、什么是oracle字符集
Oracle字符集是一個字節(jié)數(shù)據的解釋的符號集合,有大小之分,有相互的包容關系。ORACLE 支持國家語言的體系結構允許你使用本地化語言來存儲,處理,檢索數(shù)據。它使數(shù)據庫工具,錯誤消息,排序次序,日期,時間,貨幣,數(shù)字,和日歷自動適應本地化語言和平臺。
影響oracle數(shù)據庫字符集最重要的參數(shù)是NLS_LANG參數(shù)。
它的格式如下: NLS_LANG = language_territory.charset
它有三個組成部分(語言、地域和字符集),每個成分控制了NLS子集的特性。
其中:
Language 指定服務器消息的語言,territory 指定服務器的日期和數(shù)字格式,charset 指定字符集。如:AMERICAN _ AMERICA. ZHS16GBK
從NLS_LANG的組成我們可以看出,真正影響數(shù)據庫字符集的其實是第三部分。
如何把oracle數(shù)據庫字符集改為utf-8?
本文對修改Oracle數(shù)據庫字符集為UTF8的語句操作講解:查看字符集selectuserenv('language')fromdual;1.conn/assysdba2.執(zhí)行下面代碼:SHUTDOWNIMMEDIATE;STARTUPMOUNTEXCLUSIVE;ALTERSYSTEMENABLERESTRICTEDSESSION;ALTERSYSTEMSETJOB_QUEUE_PROCESSES=0;ALTERSYSTEMSETAQ_TM_PROCESSES=0;ALTERDATABASEOPEN;(------------如果有問題請在此插入下面語句--------------)ALTERDATABASENATIONALCHARACTERSETUTF8;ALTERDATABASECHARACTERSETUTF8;SHUTDOWNimmediate;STARTUP;如果修改出現(xiàn)問題時請調用下面語句再執(zhí)行一次就可以了ALTERDATABASENATIONALCHARACTERSETINTERNAL_USEUTF8;
為什么Oracle查詢出來的字符串字段是亂碼?
總結如下:
1.數(shù)據庫的查詢出來的數(shù)據,是Oracle數(shù)據庫字符集,Oracle客戶端字符集,操作系統(tǒng)字符集共同作用的結果。
2.Oracle存數(shù)據和查詢數(shù)據都是通過Oracle數(shù)據庫的字符集和Oracle客服端的字符集進行轉換的,顯示數(shù)據又是根據操作系統(tǒng)的字符集來確定的。
3.為了避免出現(xiàn)亂碼必須要把Oracle客戶端的字符集和操作系統(tǒng)的字符集設置成一樣的。
如何修改Oracle數(shù)據庫字符集?
以DBA身份進入SQLPLUSSQLsqlplussys/sysassysdba;……SQLshutdownimmediate;SQLstartupmount;SQLaltersystemenablerestrictedsession;SQLaltersystemsetjob_queue_processes=0;SQLaltersystemsetaq_tm_processes=0;SQLalterdatabaseopen;SQLalterdatabasecharactersetinternal_useAL32UTF8;(ZHS16GBK)SQLshutdownimmediate;SQLstartup;這樣就可以講ORACLE的字符集修改為UTF8,如果需要修改為GBK只需將alterdatabasecharactersetinternal_useAL32UTF8;(ZHS16GBK)這句最后的AL32UTF8修改為ZHS16GBK即可
到此,以上就是小編對于oracle字符集不匹配是什么原因導致的的問題就介紹到這了,希望這4點解答對大家有用。
文章名稱:深入Oracle字符集的查看與修改詳解?(oracle字符集不匹配如何解決)
標題鏈接:http://fisionsoft.com.cn/article/dhdhgop.html


咨詢
建站咨詢
