今天有朋友数据库出现ORA-29275 部分多字节字符,对应的字段只能用to_char才能正常查询,感觉是字符集问题。询问之果然修改过字符集。他的修改方式:SQL>STARTUP MOUNT; SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION; SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0; SQL>ALTER DATABASE OPEN; SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;查看数据库:SQL> select name,value$ from props$ where name like "%NLS%";NAME VALUE$ ------------------------------ ------------------------------ NLS_LANGUAGE AMERICAN NLS_TERRITORY AMERICA NLS_CURRENCY $ NLS_ISO_CURRENCY AMERICA NLS_NUMERIC_CHARACTERS ., NLS_CHARACTERSET ZHS16GBK NLS_CALENDAR GREGORIAN NLS_DATE_FORMAT DD-MON-RR NLS_DATE_LANGUAGE AMERICAN NLS_SORT BINARY NLS_TIME_FORMAT HH.MI.SSXFF AM NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR NLS_DUAL_CURRENCY $ NLS_COMP BINARY NLS_LENGTH_SEMANTICS BYTE NLS_NCHAR_CONV_EXCP FALSE NLS_NCHAR_CHARACTERSET AL16UTF16 NLS_RDBMS_VERSION 11.2.0.1.0确实已经修改好了。但是这里:ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;是非常有问题的,这里跳过字符集子集检查,强制进行修改。所以以后的数据将会出现问题。那么我们使用exp/imp在导出的时候指定字符集进行转换呢?引入一篇文章的部分段落:9i之前的版本:在源数据库的字符集和export的session的NLS_LANG设置不同时,所有数据的字符集(用户数据和字典数据)均会转换;在import过程中,如果import session的NLS_LANG和export时不一致,将会将dmp中的字符集转换成import session的NLS_LANG设置成的字符集;当import session的NLS_LANG和目标数据库的字符集不一致时,将会发生公import session的NLS_LANG字符集到目标数据库的字符集转换9i及之后的版本:在源数据库的字符集和export的session的NLS_LANG设置不同时,只有字典数据会发生字符集转换,用户数据则和源数据库的字符集一致,而忽略NLS_LANG的设置;在import过程中,如果import session的NLS_LANG和export时不一致,将会将dmp中的字符集转换成import session的NLS_LANG设置成的字符集;当import session的NLS_LANG和目标数据库的字符集不一致时,将会发生公import session的NLS_LANG字符集到目标数据库的字符集转换其实都没关系,不管你用什么办法转换,只要转换的字符集不是原字符集的超集都是有问题的:所以我们在修改数据库字符集的时候,执行如下语句:ALTER DATABASE CHARACTER SET ZHS16GBK如果没有报:SYS@zbdba>ALTER DATABASE CHARACTER SET ZHS16GBK; ALTER DATABASE CHARACTER SET ZHS16GBK * ERROR at line 1: ORA-12712: new character set must be a superset of old character set那说明可以修改。如果有以上错误,建议不要修改强制修改字符集Oracle关于字符集的分析 http://www.linuxidc.com/Linux/2014-09/107086.htmOracle数据库字符集研究 http://www.linuxidc.com/Linux/2014-03/97741.htm更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址