近来作项目,因为开发人员的疏漏,在创建oracle9i数据库时没有选择字符集,使用过程中,通过sql句子在该数据库中的表空间执行插入操作时,会报错。经排查,是由字符集问题造成,如今将解决方式提供如下:
在linux下若安装oracle没有选择ZHS16GBK,则在处理汉字时会有乱码情况出现。解决方式:
命令行模式下执行sqlplus"/assysdba",以sysdba身分步入sqlplus,先执行sql句子:select*fromsys.props$linux 删除文件夹,查看NLS_CHARACTER的值,若不是"ZHS16GBK",则可运行sql句子:updatesys.props$setvalue$='ZHS16GBK'wherename='NLS_CHARACTERSET'
执行完毕后linux安装中文字符集,停止数据库(sqlplus中使用sysdba登录,执行shutdown命令)linux安装中文字符集red hat linux下载,之后启动数据库,启动实例(startup),插入汉字成功。
经测试,该种方法因为更改了字符集的系统设置,即便是不妥当的(我们后来发觉备份表空间失败问题,疑似由此引发),最好的办法还是重新创建数据库,创建时选择字符集为“ZHS16GBK”