求助: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@massSQL*Plus: Release 11.2.0.1.0 Production on 5 11:44:15 2012Copyright (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 optionsSQL> select sysdate from dual;SYSDATE
--------------
15-3月 -12【远程tnsping oracle服务器】
C:\>tnsping 192.168.1.4TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 15-3月 -
2012 11:37:59Copyright (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服务器的结果】

解决方案 »

  1.   

    参考:http://blog.csdn.net/luiseradl/article/details/7064916
      

  2.   

    你服务器端的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 在试
      

  3.   


    C:\>tnsping massTNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 15-3
    2012 12:49:23Copyright (c) 1997, 2005, Oracle.  All rights reserved.已使用的参数文件:
    D:\oracle\product\10.2.0\db_1\network\admin\sqlnet.ora
    已使用 TNSNAMES 适配器来解析别名
    Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL =
    (HOST = 192.168.1.4)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = MASS)))
    OK (0 毫秒)
      

  4.   

    sqlnet.ora 的内容打印出来看看SQLNET.AUTHENTICATION_SERVICES= (NTS)
    NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)跟这个一样么,不一样改成一样的
      

  5.   


    本地访问是正常的:SQL> select sysdate from dual;SYSDATE
    --------------
    15-3月 -12
      

  6.   

    设备原来是远程访问正常的;
    但搬到机房后,由于条件限制。
    与前端的tomcat服务器连接是采用交叉线来连接的;
    这个是否有影响?
      

  7.   

    在服务器端的sqlplus里输入
    show parameter service_name
    看看service name是什么
      

  8.   

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

  9.   


    SQL> show parameter service_name;NAME                         TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    service_names                string      MASS
      

  10.   


    我也有过这样的考虑;
    绑定127.0.0.1或host是出于无奈;
    因为条件限制,后台数据库是通过双网卡与前端的2台服务器用交叉线进行连接的,还不同一个网段。
    气恼啊,已经要求工程放一个交换机过去。
      

  11.   

    GOOD!
    ths!achilles12345
    果然如你所言,将IP改成1.4就ok了。
    ths all!