ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务。网上搜了一堆,全是说listener.ora文件中有问题,但我怎么也没整好?
如这个网址:http://www.itpub.net/800167,1.html说将这个文件删除就可以。如http://www.gzitech.com/tech/list.asp?id=129说将listener.ora文件修改成如下就可以
 SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = ORACLE)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(SID_NAME = ORACLE)
)
)对这个文件的方法试了都没起作用?
请问问题在哪里?

解决方案 »

  1.   

    你的sid是什么?
    给你看我的listener.ora做参考# listener.ora Network Configuration File: d:\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 = d:\oracle\product\10.2.0\db_1)
          (PROGRAM = extproc)
        )
      )LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
        )
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = MYHOSTNAME)(PORT = 1521))
        )
      )
      

  2.   

    另外检查一下客户端的本地服务名配置tnsnames.ora
      

  3.   

    SID_LIST_LISTENER 注:行首不能有空格
      

  4.   


    LZ 也没说清楚  在什么情况下 出现的什么问题. 出现ORA-12514 的情况有很多不要乱改 用netca 自动写进去的文件 就是一定好用的......lsnrctl status 
    看看监听 是否正常          service 的名字是否正确
      

  5.   

    无法识别连接描述符中请求的服务。
    =============================
    看一下本地的 tnsnames.ora 中请求的 service name 是不是和数据库服务名一致。
      

  6.   

    偶有一个类似问题:服务器端和其它客户端都是可以的。Net Manager 测试成功,Tnsping 也没问题。但是sqlplus 报12514无法解析,XP客户端。C:\Documents and Settings\IBM>tnsping ifstestTNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 25-8月 -
    2008 14:00:44Copyright (c) 1997, 2005, Oracle.  All rights reserved.已使用的参数文件:
    D:\oracle\product\10.2.0\client_2_2\network\admin\sqlnet.ora
    已使用 TNSNAMES 适配器来解析别名
    Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
    (HOST = 10.10.2.60)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = TEST)))
    OK (20 毫秒)
    C:\Documents and Settings\IBM>sqlplus ifsapp/ifsapp@ifstestSQL*Plus: Release 10.2.0.1.0 - Production on Mon Aug 25 14:03:18 2008Copyright (c) 1982, 2005, Oracle.  All rights reserved.ERROR:
    ORA-12154: TNS:could not resolve the connect identifier specifiedtnsnames.ora:
    IFSTEST =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.2.60)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = TEST)
        )
      )sqlnet.ora:SQLNET.AUTHENTICATION_SERVICES= (NTS)NAMES.DIRECTORY_PATH= (TNSNAMES)
      

  7.   

    注意把计算机名改为和listener.ora内的host_name一样.
    这是我所遇到的问题解决方案.
      

  8.   

    参考:http://blog.sina.com.cn/s/blog_3f2ef1180100aj1a.html
      

  9.   

    我是用的TOAD软件来连接数据库,结果报ora-12514 tns 监听程序当前无法识别连接描述符中请求的服务错误
    然后上网搜了改listner.ora文件,改后的文件如下,但是还是不行,请高手帮忙啊,急呢,谢谢啦。# listener.ora Network Configuration File: D:\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 = D:\oracle\product\10.2.0\db_1)
          (PROGRAM = extproc)
        )
      (SID_DESC =
           (GLOBAL_DBNAME = ORACLE)
           (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)  
           (SID_NAME = ORACLE)
          )
      )LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
          (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
        )
      )
      

  10.   

    今天让我也遇到了。昨天启动数据库还可以的,可以登陆进去操作数据。
    初步怀疑是杀毒软件运行时禁用了某些进程,上面介绍 的解决办法可能还是解决不了问题。
    我的解决办法是:重新启动所有的oracle服务,问题就解决了。
      

  11.   

    (SID_DESC = 
          (GLOBAL_DBNAME = ORACLE) 
          (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)  
          (SID_NAME = ORACLE) 
          ) 
    改为:
    (SID_DESC = 
          (SID_NAME = ORCL) 
          (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)      
      

  12.   

    我也出现过你所说的现象啊~~是因为之前曾经修改了 Service name 所导致的。
    D:\oracle\Ora10g\sysman\config\emoms.properties
    或者是
    D:\oracle\Ora10g\主机名_SID\sysman\config\emoms.properties
    中的这个
    oracle.sysman.eml.mntr.emdRepDBName= 你的 Service name
    oracle.sysman.eml.mntr.emdRepSID= 你的 SID
    oracle.sysman.eml.mntr.emdRepConnectDescriptor=(DESCRIPTION\=(ADDRESS_LIST\=(ADDRESS\=(PROTOCOL\=TCP)(HOST\= 主机名 )(PORT\=1521)))(CONNECT_DATA\=(SERVICE_NAME\=你的 Service name)))
      

  13.   

    我也出现过你所说的现象啊~~是因为之前曾经修改了 Service name 所导致的。
    D:\oracle\Ora10g\sysman\config\emoms.properties
    或者是
    D:\oracle\Ora10g\主机名_SID\sysman\config\emoms.properties
    中的这个
    oracle.sysman.eml.mntr.emdRepDBName= 你的 Service name
    oracle.sysman.eml.mntr.emdRepSID= 你的 SID
    oracle.sysman.eml.mntr.emdRepConnectDescriptor=(DESCRIPTION\=(ADDRESS_LIST\=(ADDRESS\=(PROTOCOL\=TCP)(HOST\= 主机名 )(PORT\=1521)))(CONNECT_DATA\=(SERVICE_NAME\=你的 Service name)))
      

  14.   

    我今天通过alter database open 解决了这个错误。
      

  15.   

    直接修改 listener.ora和tnsnames.ora两个文件中 HOST=localhost获取HOST=本地计算机名 就OK了。
      

  16.   

    我昨天也遇到这种问题,通过http://hi.baidu.com/fenet/blog/item/efd04f82f2cb31a30df4d206.html上面教给的解决了,要注意添加的这段SID_DESC =
            (GLOBAL_DBNAME = ORACLE)
            (ORACLE_HOME = D:\oracle\product\10.1.0\db_1)  
            (SID_NAME = ORACLE)
    中ORACLE需要改为你自己的数据库名,我自己的那个ZY,两处都需要修改。
      

  17.   

    如果ip是自动获取的,最好把 listener.ora和tnsnames.ora两个文件中改为HOST=本地计算机名
      

  18.   

    把 listener.ora和tnsnames.ora两个文件中的host改成本机名就行了  
      

  19.   

    我也遇到这个情况,是listener.ora文件里少了这些内容导致的。
    SID_LIST_LISTENER =  
    (SID_LIST =  
      (SID_DESC =  
      (GLOBAL_DBNAME = oradb)
      (SID_NAME = oradb)
      )
    )
    还是先检查lsnrctl status的状态吧,我的服务为The listener supports no services了http://hi.baidu.com/duke147/blog/item/906f2f5f6c0f3258fbf2c0f8.html
      

  20.   

    回复15楼的,,今天我又遇到此问题了,用你这方法OK了。。
              重新启动所有的oracle服务,问题就解决了。【停止一下,,再启动一下则OK了】