Oracle测试连接时出现错误

错误1:ORA-12541: TNS:no listener

Oracle测试连接时出现错误_第1张图片

错误2:ORA-28547: connection to server failed, probable Oracle Net admin error

Oracle测试连接时出现错误_第2张图片

navicat连接oracle数据库报ORA-28547: connection to server failed, probable Oracle Net admin error错误

解决方案(1):

navicat是通过oracle客户端连接oracle服务器的. oracle的客户端有两种,一种标准的客户端安装程序,下载地址:

http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html

 而另外一种就是一种“简洁版本”的客户端,叫Oracle Instant Client,简称oci,下载地址:

http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

navicat通常会在自己的安装路径下包含某个版本的OCI,如果使用navicat连接Oracle服务器时出现ORA-28547错误,多数是因为navicat本地的OCI版本与Oracle服务器器不符造成的。解决方法就是去OCI的下载页面

http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html 

选择一个与服务器相同版本的安装到本地,这里是一个安装文档 http://wiki.navicat.com/wiki/index.php/Instant_client_required 在这个文档里有一点要特别注意:Download the appropriate Instant Client packages for your platform (must be 32-bit version, even you are using 64-bit Windows)就是说:不管你的机器是不是32位的,都必须下载32位的OCI!

查询数据库服务器版本: select * from v$version

Oracle测试连接时出现错误_第3张图片

解决方案(2):

第一个方法解决方案:(注意:如果出现无权限访问listener.ora导致无法修改该文件的情况时,可以将listener.ora拷贝到桌面,修改完成后再粘贴回来覆盖原文件!

listener.ora是服务器端的配置oracle的文件。

后来将listener.ora的这一行注释掉,就行了,, (PROGRAM = extproc)
修改为:
SID_LIST_LISTENER =
  (SID_LIST =
  (SID_DESC =
  (SID_NAME = prod)
  (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
# (PROGRAM = extproc)
  )
  )

LISTENER =
  (DESCRIPTION_LIST =
  (DESCRIPTION =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.8)(PORT = 1522))
  (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
  )
  )

第二种解决方案如下:

参考路径:https://forums.oracle.com/forums/message.jspa?messageID=693607

整理如下:

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

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

如下:
SQLNET.AUTHENTICATION_SERVICES= (NONE)

同时修改监听器配置文件,具体做法是: 在oracle安装目录下搜索listener.ora文件,一般在$/NETWORK/ADMIN目录下,把主机名用ip地址代替,例如(ADDRESS = (PROTOCOL = TCP)(HOST = HBONLINE1)(PORT = 1523))改为(ADDRESS = (PROTOCOL = TCP)(HOST = 168.168.168.42)(PORT = 1523))。

第三种解决方案:

如果你以上使用的是plsql developer工具或者是toad工具,应该以上的操作就绝对可以解决你的问题,

但是如果你使用的是navicat工具,以上怕是还不能解决你的问题。具体的如果在navicat工具上使用就是如下的问题:

Oracle基本是默认安装,安装过程没出现过任何异常
Oracle开启了两个服务:OracleServiceORCL和OracleOraDb11g_home1TNSListener
Navicat一直都连接不上本地的Oracle
网上搜了一大堆资料,大都是改那3个配置文件的
最终还是没能解决这个问题
最终的问题是:
Navicat主机那里如果填本机IP地址(192.168.18.8),错误代码是:ORA-12541:TNS:no listener
如果填localhost,错误代码是:ORA-28547:connection to server failed,probable Oracle Net admin error
tnsping localhost 是通的,tnsping 192.168.18.8 则出错 TNS-12541: TNS: 无监听程序

解决的方案是:

oci.dll的版本不对
  从 http://www.oracle.com/technology/software/tech/oci/instantclient/index.html 下载client
  里面很多,根据你的版本来下,我下载的是instantclient_11_1。
  在navicat的 工具-选项-其他-OCI ,选择刚下的client中的 oci.dll
  设置环境变量:
  1)在环境变量PATH中开头增加C:\Instantclient10_2;
  2)增加用户环境变量SQLPATH,值为C:\Instantclient10_2
  3)增加用户环境变量NLS_LANG,值为AMERICAN_AMERICA.UTF8
  选择 Basic 连接,就大概能连接上了

以上的操作可以通过如下进行排查:

进行查找:
1、首先确认你的数据库已经启动了,可以用net start OracleServiceORCL
2、其次确认你的侦听启动了否,用lsnrctl status查看,如果没有启动,用lsnrctl start启动。
3、以上启动后,直接打开sqlplus,输入用户名密码,无需输入服务名,直接登录即可。





你可能感兴趣的:(Oracle测试连接时出现错误)