Oracle 10g字符集问题

来源:互联网 发布:挣钱的软件 编辑:程序博客网 时间:2024/05/01 09:14

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/sysdbaSQL>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> startupSQL> select * from v$nls_parameters;

最后重新打开PL/SQL就不会出现提示信息说字符集不一致。
3.出现上述的问题原因:我大概总结了一下,因为我以前安装过oracle11g,在我的电脑上,也出现了这个问题,貌似没有解决,最后卸载了,注册表也删除了,但任然不知道删除的彻底不彻底,可能是因为当时安装时没有选择自定义安装所造成的,所以以后应当注意,这个不是修正客户端字符集的问题,而是需要修改数据库字符集的问题。
ps:以上就是我今天遇到的问题和解决方案。

0 0