Navicat报错-ORA-28547:connection to server failed,probable Oracle Net admin error

时间:2024-03-19 22:23:13

   重装完系统之后,新装完Navicat之后,在连接oracle数据库的时候,出现如下报错:

ORA-28547:connection to server failed,probable Oracle Net admin error,截图如下:


Navicat报错-ORA-28547:connection to server failed,probable Oracle Net admin error


问题可能原因:重装系统之后,需要先安装oracle客户端,才能使用各种工具,我们把oracle客户端安装之后,看看是否还会存在这个问题

注意:如果你是在您本机装的oracle,然后访问本机的数据库,是不需要再额外安装客户端了,因为oracle服务器端就会带有客户端


1、oracle客户端下载

去官网下载客户端,我这边数据库版本为11.2.0.4.0,官网上没有提供客户端,只能下载11.2.0.1.0的客户端了,下载链接:

http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-win64soft-094461.html?ssSourceSiteId=otncn


Navicat报错-ORA-28547:connection to server failed,probable Oracle Net admin error2、客户端安装

中间可能会提示有一个条件不通过,查看日志,没什么影响,在这里就一直默认下去了

Navicat报错-ORA-28547:connection to server failed,probable Oracle Net admin error

3、执行netca

出现以下报错:

caused by: Java.io.FileNotFoundException: D:\app\Administrator\product\11.2.0\client_2\network\admin\tnsnames.ora (拒绝访问。)

解决:使用管理员运行netca就可以了,然后我们创建一个tnsname.ora文件,配置上要连接的数据库信息,如下图,选择本地网络服务名配置创建tnsname.ora:

Navicat报错-ORA-28547:connection to server failed,probable Oracle Net admin error


4、客户端装完之后,发现navicat还是报这个错,上网查询之后,发现nvicate比较特殊,我的toad和plsql都是已经能正常使用了,接下来继续排查

客户端的配置文件sqlnet.ora中配置如下:

按照网上的做法

将#SQLNET.AUTHENTICATION_SERVICES= (NTS)注释掉,改成如下

如下:SQLNET.AUTHENTICATION_SERVICES= (NONE)

结果还是没有好转,继续排查


问题原因:如果使用Navicat连接Oracle服务器出现ORA-28547错误时,多数是因为Navicat本地的OCI版本与Oracle服务器服务器不符造成的


在本案例中我的navicat的本地的OCI路径是C:\Program Files\PremiumSoft\NavicatPremium\instantclient_10_2\oci.dll


这个版本应该是不对的,应该11G才对,so,我们使用

C:\app\56810\product\11.2.0\client_1\BIN\oci.dll

配置:Navicat-->工具-->OCI-->编辑输入路径


完美解决!!!


ps:

ORACLE调用接口(Oracle Call Interface简称OCI)提供了一组可对ORACLE数据库进行存取的接口子例程(函数),通过在第三代程序设计语言(如C语言)中进行调用可达到存取ORACLE数据库的目的。OCI就是为了实现高级语言访问数据库而提供的接口。OCI允许开发者在程序里使用SQL和PL/SQL来访问数据库。开发者可以使用第三代语言来编写程序,而使用OCI来访问数据库。

也就是说OCI是一种更高级功能的一种实现,对,没错,主流趋势。





      本文转自1清风揽月1  51CTO博客,原文链接:http://blog.51cto.com/watchmen/1931582,如需转载请自行联系原作者