ORA-12514,TNS:监听器当前不知道连接描述符中请求的服务

时间:2016-06-12 15:39:46

标签: oracle listener

我的问题始于空闲实例。我正在尝试使用SQL Developer连接到我的本地XE实例。

我在Google上尝试了很多链接,如果你提供一些解决方案,我可以随时告诉你我尝试了这些但仍然期待解决它。

其他信息:

  1. SQL Developer中的所有其他conn字符串都正常工作。
  2. 尝试使用/ nolog和所有.....重新启动数据库
  3. 尝试改变系统....
  4. 我可以正确连接到具有sys权限的orcl(我的本地sid名称),唯一的问题是Oracle附带的虚拟用户HR。
  5. 我能够解决原始的空闲实例问题
  6. 使用裸字符串连接SQL * Plus:description ...给了我错误

    Error 6 initializing SQL*Plus  
    SP2-0667: Message file sp1<lang>.msb not found  
    SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory
    
  7. 我的Oracle主页是&#34; C:\ app \\ product \ 11.2.0 \ dbhome_1 \ NETWORK \ ADMIN&#34;
  8. 附件是listener.ora(第一行被注释但是当我把#in里面变成粗体所以请认为它被评论了):

    #ADR_BASE_LISTENER = C:\app\387759
    
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = CLRExtProc)
          (ORACLE_HOME = C:\app\387759\product\11.2.0\dbhome_1)
          (PROGRAM = extproc)
          (ENVS = "EXTPROC_DLLS=ONLY:C:\app\387759\product\11.2.0\dbhome_1\bin\oraclr11.dll")
        )
        (SID_DESC =
          (GLOBAL_DBNAME = XE)
          (ORACLE_HOME = C:\app\387759\product\11.2.0\dbhome_1)
          (SID_NAME = ORCL)
        )
      )
    
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
        )
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
        )
      )
    
    ADR_BASE_LISTENER = C:\app\387759\product\11.2.0\dbhome_1\log
    

    现在来自cmd(作为管理员)的错误是:

    ERROR:
    ORA-12154: TNS:could not resolve the connect identifier specified
    

    tnsnames.ora中的相关条目(除了其他工作条目)也是:

    LISTENER_ORCL =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    
    ORACLR_CONNECTION_DATA =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
        )
        (CONNECT_DATA =
          (SID = CLRExtProc)
          (PRESENTATION = RO)
        )
      )
    
    ORCL =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = orcl.36.160.158)
        )
      )
    

    另外,请考虑我可以解决空闲实例问题,因此不再存在。

    387759 is my username to the machine. 
    

    附加信息,仅在修复空闲实例问题时进行了更改,即删除行

    *.local_listener='LISTENER_ORCL'
    
    从InitORCL.ora文件

    然后再从pfile创建spfile但刚才我再次将它添加到pfile然后创建了spfile。

    Cmd行开始给我错误:

    SQL> startup    
    ORA-00119: invalid specification for system parameter LOCAL_LISTENER    
    ORA-00132: syntax error or unresolved network name 'LISTENER_ORCL'    
    SQL>
    

    所以理论上我回到了无法启动oracle实例的问题。

    无法在提到的位置找到pfile(在评论中),我尝试使用命令

      

    show parameter spfile;

    我得到了以下信息:

      

    SQL&GT; show parameter spfile;   ORA-01034:ORACLE不可用
      进程ID:0
      会话ID:0序列号:0

    另外一个信息,我只能看到在services.msc

    下运行的2个服务
      

    OracleOraDb11g_home1TNSListener
      OracleServiceORCL的

    当我需要使用本地oracle时手动启动它们我保持它们没有启动模式以节省一些RAM。其他与oracle相关的服务我几乎一直都在关闭,而且在这个时候我收到错误。这有助于缩小问题范围

    `

1 个答案:

答案 0 :(得分:0)

您的ORACLE_HOME应为C:\app\387759\product\11.2.0\dbhome_1。你的TNS_ADMIN应该是C:\app\387759\product\11.2.0\dbhome_1\NETWORK\ADMIN - 该目录包含你的listener.ora,sqlnet.ora,tnsnames.ora等。

如果您可以在本地连接为SYS(例如sqlplus / as sysdba),但它表示您已连接到空闲实例,则数据库未运行。您需要启动数据库,因为您在Windows上,所以您也需要启动OracleXE服务。

当数据库启动时,它将尝试向监听器注册其服务名称。默认情况下it will try to use the network name of the server。您的侦听器仅侦听localhost,因此可能不匹配。看起来你试图告诉它注册该地址但添加了单引号;它应该是:

*.local_listener=LISTENER_ORCL

修复后,您的数据库应该启动并注册到侦听器,然后您应该可以从同一台计算机连接,例如用:

sqlplus userid/password@orcl

sqlplus userid/password@//localhost:1521/orcl.36.160.158

...如果tnsnames.ora中的服务名称正确无误。 SQL Developer也应该使用相同的值。但是,您无法从其他任何地方进行连接,因为侦听器在localhost上进行侦听。