如何修改Oracle数据库字符集

如题所述

Databasecharacterset(AL32UTF8)andClientcharacterset(ZHS16GBK)aredifferent.Charactersetconversionmaycauseunexpectedresults.Note:youcansettheclientcharactersetthroughtheNLS_LANGenvironmentvariableortheNLS_LANGregistrykeyinHKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb11g_home1.SIMPLIFIEDCHINESE_CHINA.ZHS16GBK包含AMERICAN_AMERICA.AL32UTF8.这可是个麻烦事,不是改客户端字符集的问题。要改数据库的字符集。我是自己笔记本上面的oracle11g,所以胆子还是很大的:SQL>conn/assysdbaSQL>shutdownimmediate;SQL>startupmountSQL>ALTERSYSTEMENABLERESTRICTEDSESSION;SQL>ALTERSYSTEMSETJOB_QUEUE_PROCESSES=0;SQL>ALTERSYSTEMSETAQ_TM_PROCESSES=0;SQL>alterdatabaseopen;SQL>ALTERDATABASECHARACTERSETZHS16GBK;ORA-12712:newcharactersetmustbeasupersetofoldcharacterset提示我们的字符集:新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改:SQL>ALTERDATABASEcharactersetINTERNAL_USEZHS16GBK;--我们看到这个过程和之前ALTERDATABASECHARACTERSET操作的内部过程是完全相同的,也就是说INTERNAL_USE提供的帮助就是使Oracle数据库绕过了子集与超集的校验.SQL>select*fromv$nls_parameters;SQL>shutdownimmediate;SQL>startupSQL>select*fromv$nls_parameters;以后安装oracle11g的时候记得选择自定义安装,把这个字符集的事情事先弄好。
温馨提示:答案为网友推荐,仅供参考
相似回答