Navicate Premium连接Oracle 11g 时的常见异常

最初navicate是自己写点东西时连接MySQL用的,考虑到以后可能会连接别的数据库,所以没有下载Navicate for MySQL版本,下载的是Navicate Premium。今天在用Navicate Premium 连接Oracle 11g 时出现了一些预想之外的错误。

根据IP和服务名创连接数据库时

Navicate Premium连接Oracle 11g 时的常见异常

 

结果出乎意外的报了一个ORA-28547的错误:连接服务器失败,可能是Oracle Net 管理错误

Navicate Premium连接Oracle 11g 时的常见异常

造成这个错误的原因就是Navicat安装目录下Navicat Premium\instantclient_10_2下的oci.dll文件不给力,自己下载一个替换掉就可以了。

 

解决方法:

1.前往“http://www.oracle.com/technetwork/database/database-technologies/instant-client/downloads/index.html

2.选择与自己系统以及数据库匹配的“Instant Client”。

3.将下载的压缩包解压缩,然后将解压缩的文件夹放到Navicat Premium目录下

4.打开Navicate(我的是Navicate 12,其他版本下述操作步骤可能会略有不同),工具-->选项-->环境-->OCI环境-->OCI library(oci.dll),前往刚才解压缩后放在Navicat Premium目录下的文件夹内,选择oci.dll,替换掉之前的oci.dll。

Navicate Premium连接Oracle 11g 时的常见异常

5.    重启Navicate!!!!

 

当然了在这儿过程中也是踩过坑的,下载的压缩文件文件一定要和自己的navicate版本,数据库版本以及系统版本一致,我的操作系统是Win8 64位,Navicate是Navicate 12.0.11(64bit),数据库是Oracle 11g(11.2.0.1.0)-64bit,所以下载的oci.dll一定要对应Oracle 11.2并且为64位版本。但是当初并没有考虑到这一点,先是下载了一个一个32位的instantclient-basic-nt-11.2.0.4.0.zip,后来又下载了一个 64位的instantclient-basic-win64-10.2.0.5.zip,解压后选中了相应的oci.dll,仍然会报一个"Oracle library is not loaded."或者"Cannot load OCI DLL……"的错误。大概意思就是不能正确加载oci.dll或者Oracle相应的库,如果报这个错应该是oci.dll版本和Navicate版本或者Oracle版本不一致造成的。

Navicate Premium连接Oracle 11g 时的常见异常