谈科技 赏影视
享生活 览世界

Navicat Premium连接Oracle失败

Navicat Premium是一款方便实用的可多重连接的数据库客户端管理工具,且能同时连接不同类型的数据库。有了Navicat Premium,即便没有安装专门的数据库客户端,也可以进行相关SQL操作,在某些情景下省去了安装庞大数据库客户端的麻烦。

navicat_connect_moredb

不过,事事并不是那么美好的,虽然Navicat Premium足够强大,但也不是万能的,或者说还没有做成万能的,有时还是需要我们费点心。

以Navicat Premium连接Oracle为例,通常会遇到3种问题:1、因服务端是中文字符可能连接失败;2、因oci.dll版本或Navicat Premium版本问题连接失败;3、无法以TNS方式连接。

上面第3个问题是因为在本机未安装配置好Oracle服务端及tnsnames.ora文件等所致,但通常不会用Navicat Premium以TNS方式去连接Oracle,因为这不利于方便使用,一般都以Baisc方式连接。

上面第1、2个问题是本文的重点。通常Navicat Premium的安装子目录中自带有oci.dll文件用于连接Oracle,但是自带的版本过于精简且版本也不是很高,如果遇到Oracle服务端使用的是中文字符集(例如zhs16gbk),那么就会出现连接失败,如下图。navicat_oracle10basic_zhs16gbk这个问题的解决方式是:要么更改服务端的字符集,要么去下载版本更新的oci.dll(如Oracle11g的)。oci.dll的获取可以通过安装Oracle的方式,也可以去下载Oracle即时客户端压缩包(文件名为instantclient-basic….zip),如无特殊需要建议下载压缩包,文件较小,下载后整体解压,然后在Navicat Premium中重新定位配置OCI,如下图。navicat_select_oci不过,这里要注意一下Oracle服务端、Oracle客户端、Navicat Premium的版本匹配原则,否则即使更新了oci.dll仍有可能出现如下连接错误。navicat_oracle_oci_err归纳来说,不管Oracle服务端的版本号是多少、是32位还是64位的,客户端最好用32位的,版本号等于或更大一些。Navicat Premium建议用32位的,版本号较新更佳。例如服务端是64位的Oracle10g,客户端用32位Oracle11g,Navicat Premium用32位的11.x.x。

最后提一下,在重新定位OCI时发现,如果oci.dll是通过安装程序解压到操作系统中的,不能复制移动oci.dll的位置后再定位,否则会出现无效的情况,至于是什么原因暂时不明,在使用中尽量避免这种行为。另外,关于Navicat连接Oracle的资料可以参见这篇文章:http://www.cnblogs.com/Leo_wl/p/4423928.html。

转载请注明出处:光影线 » Navicat Premium连接Oracle失败

分享到:更多 ()