我电脑上装了pl/sql developer和oracle客户端,服务器端(oracle10g)在公司的服务器上,现在是我可以使用pl/sql developer登陆公司服务器上的oracle10g,今天我在自己的电脑上也安装了oracle10g的服务,现在得情况是使用pl/sql developer可以顺利登陆到我本机上的oracle10g,但当登陆公司服务器上的oracle10g时,报了这个错误,在网上搜的那些结果貌似药不对症,请问,我这个问题是出在什么地方,造成这个问题的原因是什么?该如何修改?兄弟在此先谢过

解决方案 »

  1.   

    我上次好像也是遇到和你一样的问题,主要是network\admin目录下  listener.ora和tnsnames.ora这两个文件里的配置问题
      

  2.   

    ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务检查tnsname。
      

  3.   

    如何检查?
    现在是可以访问我本机上的oracle服务,但访问不了公司服务器上的oracle服务。这会不会是oracle客户端的问题?
      

  4.   

    可以肯定是listener.ora和tnsnames.ora这两个文件中的配置问题,仔细检查
      

  5.   

    1.服务器端的监听服务开启没有?
    2.如果第一步没有门体,把你本地的tnsname.ora文件里配置的连接标识符贴出来看下
      

  6.   

    ip 能ping 通吗?还有是公司服务器是否有防火墙?
      

  7.   

    ip能够ping通,公司服务器有没防火墙我不太清楚,不过我觉得应该不是防火墙的问题,因为在我本机上安装oracle10g服务之前,我是可以使用pl/sql developer正常登陆公司服务器上的数据库的。当我在我本机上装了一个oracle服务后则出现了这个问题。公司服务器那边的监听程序是什么样子我不清楚,因为在我本地安装oracle 10g服务之前可以正常访问,所以我也觉得公司服务器上的oracle服务的监听程序是正常的。以下是我本机上的tnsname.ora的内容:
    # tnsnames.ora Network Configuration File: E:\Database\oracle\product\10.2.0\db_1\network\admin\tnsnames.ora
    # Generated by Oracle configuration tools.
    ORCL =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.87)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = orcl)
        )
      )EXTPROC_CONNECTION_DATA =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
        )
        (CONNECT_DATA =
          (SID = PLSExtProc)
          (PRESENTATION = RO)
        )
      )
    listener.ora的内容如下:
    # listener.ora Network Configuration File: E:\Database\oracle\product\10.2.0\db_1\NETWORK\ADMIN\listener.ora
    # Generated by Oracle configuration tools.SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = E:\Database\oracle\product\10.2.0\db_1)
          (PROGRAM = extproc)
        )
      )LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
        )
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.87)(PORT = 1521))
        )
      )
    sqlnet.ora的内容如下:
    # sqlnet.ora Network Configuration File: E:\Database\oracle\product\10.2.0\db_1\network\admin\sqlnet.ora
    # Generated by Oracle configuration tools.# This file is actually generated by netca. But if customers choose to 
    # install "Software Only", this file wont exist and without the native 
    # authentication, they will not be able to connect to the database on NT.SQLNET.AUTHENTICATION_SERVICES= (NTS)NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
    PS:公司服务器的地址是192.168.0.10
      

  8.   

    我现在怀疑是因为我本机安装了oracle10g的服务,导致使用pl/sql developer访问时,本机oracle服务的监听服务拦截了所有的访问请求,然后匹配本机上的oracle服务,当使用pl/sql developer访问公司服务器上的oracle服务时,却被本机上的监听程序拦截,然后去本机的监听程序里匹配,最终导致了这个结果。
      

  9.   

    忘了结贴了。最后发现这个问题应该是oracle客户端的问题,因为以前可以访问服务器端的oracle服务,那就说明服务器端的配置没有问题。我本机使用的是XEClient客户端,将客户端中的工具/首选项/oracle主目录名改为XEClient后问题便解决了,不过随之而来的是只能访问公司服务器端的oracle服务而访问不了本机上安装的oracle服务,这是因为屏蔽了127.0.0.1也就是本机的ip,需要在sqlnet.ora中增加一点配置,新增TCP.INVITED_NODES=(192.168.0.87)或者是将NAMES.DIRECTORY_PATH的值设为 (TNSNAMES, EZCONNECT, HOSTNAME, ONAMES)。