因为版本原因,PB9 启动要配合oracle9i的客户端。由于已经装了11g客户端,所以我把它卸载后装了一个9i免安装客户端。接下去问题就来了,足足搞了我一个小时才完成,下面我把我遇到的问题黏贴出来,希望可以帮到走足够弯路的大伙们。
安装好9i后,打算启动plsql去连接:ORA-12705:Cannot access NLS data files or invalid environment specified。奇怪了,我去尝试sqlplus命令连接看:
果然还是报错,网上找的方法:
如果是Windows平台,注册表里 \HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE 查找键 NLS_LANG,这个键由Oracle标准客户端安装创建, 值是 NA 。这个导致了 ORA-12705错误。解决方法就是修改NA为SIMPLIFIED CHINESE_CHINA.ZHS16GBK。
Linux下 如果环境变量 NLS_LANG 值是NA 会引起 ORA-12705 错误,解决方法是修改set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK。
发现我的注册文件中的值本来就是SIMPLIFIED CHINESE_CHINA.ZHS16GBK。
那就算了 我把9i客户端删除,重装11g。费了老半天还是这个错,这下有点难办了,转了一圈还是回到了原点。
不怕,继续摸索。
突然灵光一来,会不会是注册表中有多个NLS_LANG,导致客户端不知道取哪个值呢?就像是没彻底删除干净,
windows+R
regedit;
查找NLS_LANG 再查找下一个
果然是这样 9i对应的NLS_LANG的值为NA,删除oracle9i客户端的时候没有彻底删除干净,导致注册表中存在多个NLS_LANG。
OK 搞定。 当然,删除11g客户端的时候也会这样,要么在注册表中手动删除9i客户端的所有注册,要么删除11g的所有。
接下去又来了一个奇葩的问题:不管在sqlplus还是plsql查询时,中文显示乱码。
方法:1,环境变量中加入NLS_LANG 值为SIMPLIFIED CHINESE_CHINA.ZHS16GBK
2.cmd下 执行set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
然后用sqlplus进入