Linux下Oracle字符集问题引发的汉字插入失败解决方案

最近作项目,由于开发人员的疏忽,在创建oracle9i数据库时没有选择字符集,使用过程中,通过sql语句在该数据库中的表空间执行插入操作时,会报错。经排查,是由字符集问题引起,现在将解决方法提供如下:
在linux下若安装oracle没有选择ZHS16GBK,则在处理汉字时会有乱码情况出现。解决方法:
 命令行模式下执行sqlplus "/as sysdba",以sysdba身份进入sqlplus,先执行sql语句:select * from sys.props$,查看NLS_CHARACTER的值,若不是"ZHS16GBK",则可运行sql语句:update sys.props$ set value$='ZHS16GBK' where name='NLS_CHARACTERSET'
 
执行完毕后,停止数据库(sqlplus中使用sysdba登陆,执行shutdown命令),然后启动数据库,启动实例(startup),插入汉字成功。
 
经测试,该种方式由于修改了字符集的系统设置,毕竟是不妥当的(我们后来发现备份表空间失败问题,疑似由此引起),最好的办法还是重新创建数据库,创建时选择字符集为“ZHS16GBK”

你可能感兴趣的:(oracle,sql,linux)