当前位置: 代码迷 >> Oracle管理 >> :Oracle11g(linux) 本地一切正常;远程访问ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
  详细解决方案

:Oracle11g(linux) 本地一切正常;远程访问ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务

热度:281   发布时间:2016-04-24 05:29:31.0
求助:Oracle11g(linux) 本地一切正常;远程访问ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务。
求助:Oracle11g(linux) 本地一切正常;远程访问ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务。
配置如下:

【oracle服务器listener.ora】
[oracle@localhost admin]$ more listener.ora
# listener.ora Network Configuration File: /opt/ora11g/product/11.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION_LIST =
  (DESCRIPTION =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
  )
  )

ADR_BASE_LISTENER = /opt/ora11g


【oracle服务器tnsnames.ora】
[oracle@localhost admin]$ more tnsnames.ora
# tnsnames.ora Network Configuration File: /opt/ora11g/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

MASS =
  (DESCRIPTION =
  (ADDRESS_LIST =
  (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
  )
  (CONNECT_DATA =
  (SERVICE_NAME =MASS)
  )
  )

[oracle@localhost admin]$ 

[oracle@localhost admin]$ sqlplus mass/timesnet@mass

SQL*Plus: Release 11.2.0.1.0 Production on 5 11:44:15 2012

Copyright (c) 1982, 2009, Oracle. All rights reserved.



【oracle服务器本地连接访问正常】
 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning and Real Application Testing options

SQL> select sysdate from dual;

SYSDATE
--------------
15-3月 -12





【远程tnsping oracle服务器】
C:\>tnsping 192.168.1.4

TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 15-3月 -
2012 11:37:59

Copyright (c) 1997, 2005, Oracle. All rights reserved.

已使用的参数文件:
D:\oracle\product\10.2.0\db_1\network\admin\sqlnet.ora

已使用 HOSTNAME 适配器来解析别名
Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=192.168.1.4))(ADD
RESS=(PROTOCOL=TCP)(HOST=192.168.1.4)(PORT=1521)))
OK (20 毫秒)


【远程连接 oracle服务器的配置】


【远程测试 oracle服务器的结果】



------解决方案--------------------
参考:http://blog.csdn.net/luiseradl/article/details/7064916
------解决方案--------------------
试一下,把HOST改为IP地址!
------解决方案--------------------
你服务器端的listener使用的是动态注册,但你服务器实例已经启动应该不是这个问题。
还有这里
已使用 HOSTNAME 适配器来解析别名
Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=192.168.1.4))(ADD
RESS=(PROTOCOL=TCP)(HOST=192.168.1.4)(PORT=1521)))
OK (20 毫秒)
这个service_name怎么是IP地址 应该是MASS

把你客户端的tnsname.ora的SERVICE_NAME=192.168.1.4改成SERVICE_NAME=mass 在试
------解决方案--------------------
sqlnet.ora 的内容打印出来看看

SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)

跟这个一样么,不一样改成一样的
------解决方案--------------------
数据库服务是否启动~~
------解决方案--------------------
这种问题,上次我解决的办法是你数据库不能绑定127.0.0.1或者是HOST,要绑定你这台服务器在局域网中的地址。我想是和底层Socket通信机制有关,监听器是在这个127.0.0.1监听,只能本地连接上。如果换成改服务器的局域网地址就行了。我就是这样解决的,希望能帮助楼主。