出问题到的机器环境:
Oracle 11gR2 64bit
Navicat for Oracle 11.0.10
根据网上一些大神的做法及个人的一些推测,总结如下:
问题出现的原因:Navicat与Oracle的位数不一致,前者32bit,后者64bit
网上的一些没有起效的做法:
1.修改Oracle中的listener.ora 或者tnsname.ora等配置文件,未能生效;
2.使用Oracle中的oci.dll替换Navicat中的oci.dll,会出现“cannot load oci.dll”错误,未能生效;
3.配置Navicat 工具-->选项-->其他-->OCI-->路径设置为Oracle下的oci.dll路径,未能生效;
推测:以上方法,大神发布前,肯定解决了他们遇到的ORA-28547错误,但是出现该错误的原因不同,所以此时未能生效……
针对该种原因导致的ORA-28547的有效做法:
step1: 查看自己Oracle具体版本号,具体做法,可以在cmd中输入sqlplus -version命令
step2: 到http://www.oracle.com/technetwork/topics/winsoft-085727.html 下载与自己Oracle版本一致的
32bit的实例客户端。如:数据服务器上的Oracle版本为:11.2.0.2.0,找到页面中Version11.2.0.2.0下面的第一个文件下载即可 instantclient-basic-nt-11.2.0.2.0.zip (注意,下载前选中Accept License Agreement,然后方可下载,右击连接-->目标另存为即可)
step3: 解压缩刚下载到的32位实例客户端,找到其中oci.dll的具体路径,并将其设置到Navicat中,具体做法
:Navciat-->工具-->选项-->其他-->OCI,在OCI library框中选择刚下载的实例客户端中oci.dll的路径。
step4: 重启Navicat,测试连接