您的位置:首页 > 数据库 > Oracle

Oracle 10g字符集问题

2016-07-26 05:03 555 查看
1.出现的问题:我的电脑没有安装oracle10g服务端,安装了oracle10g的客户端,然后有一个免安装版的PL/SQL,利用sqlplus时,可以正常登录,不会出现客户端和数据库字符集不一致的问题,当我使用PL/SQL首次登录时,出现了数据库与客户端字符集不一致的情况,提示信息如下图所示:



2.解决方案:

在google上面搜了一下,基本上所有的answer都是:开始-运行-regedit-找到提示路径-找到 NLS_LANG 键,他的值原来是:SIMPLIFIED CHINESE_CHINA.ZHS16GBK,修改为:SIMPLIFIED CHINESE_CHINA.AL32UTF8-重新登录PL/SQL-问题就解决了,我也按照这个步骤做了,无奈我找到上图路径中software,但是下面的就不存在,经过一番尝试,最终找到解决方案,解决了PL/SQL首次登录字符集不一致的问题。

SQL>conn as/sysdba
SQL>shutdown immediate;
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 ZHS16GBK;
ORA-12712: 新字符集必须为旧字符集的超集
----这时我们可以跳过超集的检查做更改:
SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
--我们看到这个过程和之前ALTER DATABASE CHARACTER SET操作的内部过程是完全相同的,也就是说INTERNAL_USE提供的帮助就是使Oracle数据库绕过了子集与超集的校验.
SQL> select * from v$nls_parameters;
SQL> shutdown immediate;
SQL> startup
SQL> select * from v$nls_parameters;


最后重新打开PL/SQL就不会出现提示信息说字符集不一致。

3.出现上述的问题原因:我大概总结了一下,因为我以前安装过oracle11g,在我的电脑上,也出现了这个问题,貌似没有解决,最后卸载了,注册表也删除了,但任然不知道删除的彻底不彻底,可能是因为当时安装时没有选择自定义安装所造成的,所以以后应当注意,这个不是修正客户端字符集的问题,而是需要修改数据库字符集的问题。

ps:以上就是我今天遇到的问题和解决方案。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息