我从来就没用过Oracle,由于公司工作需要所以需要连接别人的Oracle数据库,但使用最简单的连接语句都连接不上,公司又在催进度,还希望高手解答!连接时出现ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务的错误,在网上找了的方法还是解决不了,所以才发帖,希望能得到高人的帮助啊!急啊!!!!

解决方案 »

  1.   

    去你的oracle安装目录 的network/admin下有个配置文件,你需要把oracle的实例配置上...就ok了.
      

  2.   

    我的就这样解决了:给你参考一下若Oracle出现“监听程序当前无法识别连接描述符中请求的服务”这个错误可以按照以下方法解决:来源:(http://blog.sina.com.cn/s/blog_628ed1290100gci9.html) - ORA-12514: TNS:监听程序当前无法识别连接描述符中请_jiajia_新浪博客
    可以通过这个路径找到一个文本文件:
    oracle\product\10.2.0\db_1\NETWORK\ADMIN\listener.ora 还一个在同路径下的tnsnames.ora文件,这两个文本中的一些信息要是这样的:
    listener.ora
    # listener.ora Network Configuration File: F:\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 = F:\oracle\product\10.2.0\db_1)
          (PROGRAM = extproc)
        )
         (SID_DESC =
          (GLOBAL_DBNAME = orcl)
          (ORACLE_HOME = F:\oracle\product\10.2.0\db_1)
          (SID_NAME = orcl)
        ))LISTENER =
    (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
        )
    )出现“监听程序当前无法识别连接描述符中请求的服务”一般是因为缺少了上面中间位置的(SID_DESC =
          (GLOBAL_DBNAME = orcl)
          (ORACLE_HOME = F:\oracle\product\10.2.0\db_1)
          (SID_NAME = orcl)
        )
    只要把它加在上面就OK了!!!!!!!!!!!!!tnsnames.ora
    # tnsnames.ora Network Configuration File: F:\oracle\product\10.2.0\db_1\network\admin\tnsnames.ora
    # Generated by Oracle configuration tools.ORCL =
    (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(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)
        )
    )
      

  3.   


    tnsnames.ora里的是这个:
    ORCL =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.1.99)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = ORCL)
        )
      )
    listener.ora里的是这个:
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (GLOBAL_DBNAME = Vi_jianyanjg)
          (ORACLE_HOME = 172.16.1.99)
          (SID_NAME = ORCL)
        )
      )
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = GWI-BST)(PORT = 1521))
        )
      )
      

  4.   

    tnsnames.ora里的是这个:
    ORCL =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.1.99)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = ORCL)
        )
      )
    listener.ora里的是这个:
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (GLOBAL_DBNAME = Vi_jianyanjg)
          (ORACLE_HOME = 172.16.1.99)
          (SID_NAME = ORCL)
        )
      )LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = GWI-BST)(PORT = 1521))
        )
      )
      

  5.   

    重新配置一下你的netconfiguration
      

  6.   

    如果你连接的是别人的数据库的话,本地就不需要配置监听了,你的netmanager里面好就行,服务名,端口配置对就可以了,最好用配置助手配置,这样子不容易出错,如果楼主手动去修改network/admin下的tnsnames.ora话容易出错。