深入Oracle字符集的查看与修改详解?(oracle字符集不匹配如何解决)
深入Oracle字符集的查看与修改详解?
oracle服务器和客户端字符集的查看和修改
(图片来源网络,侵删)一、什么是oracle字符集
Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系。ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据。它使数据库工具,错误消息,排序次序,日期,时间,货币,数字,和日历自动适应本地化语言和平台。
影响oracle数据库字符集最重要的参数是NLS_LANG参数。
(图片来源网络,侵删)它的格式如下: NLS_LANG = language_territory.charset
它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。
其中:
(图片来源网络,侵删)Language 指定服务器消息的语言,territory 指定服务器的日期和数字格式,charset 指定字符集。如:AMERICAN _ AMERICA. ZHS16GBK
从NLS_LANG的组成我们可以看出,真正影响数据库字符集的其实是第三部分。
如何把oracle数据库字符集改为utf-8?
本文对修改Oracle数据库字符集为UTF8的语句操作讲解:查看字符集selectuserenv('language')fromdual;1.conn/assysdba2.执行下面代码:SHUTDOWNIMMEDIATE;STARTUPMOUNTEXCLUSIVE;ALTERSYSTEMENABLERESTRICTEDSESSION;ALTERSYSTEMSETJOB_QUEUE_PROCESSES=0;ALTERSYSTEMSETAQ_TM_PROCESSES=0;ALTERDATABASEOPEN;(------------如果有问题请在此插入下面语句--------------)ALTERDATABASENATIONALCHARACTERSETUTF8;ALTERDATABASECHARACTERSETUTF8;SHUTDOWNimmediate;STARTUP;如果修改出现问题时请调用下面语句再执行一次就可以了ALTERDATABASENATIONALCHARACTERSETINTERNAL_USEUTF8;
为什么Oracle查询出来的字符串字段是乱码?
总结如下:
1.数据库的查询出来的数据,是Oracle数据库字符集,Oracle客户端字符集,操作系统字符集共同作用的结果。
2.Oracle存数据和查询数据都是通过Oracle数据库的字符集和Oracle客服端的字符集进行转换的,显示数据又是根据操作系统的字符集来确定的。
3.为了避免出现乱码必须要把Oracle客户端的字符集和操作系统的字符集设置成一样的。
如何修改Oracle数据库字符集?
以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点解答对大家有用。