Oracle错误:ORA-12154:TNS:无法解析指定的连接标识符

时间:2016-02-07 10:13:29

标签: vb.net oracle oracle11g database-connectivity

我是甲骨文的新手。我使用的是Windows 10 64位,Oracle XE 11g,Visual Studio 2010和vb.net。但为什么我会得到 错误:

enter image description here

当我关闭或休眠我的机器时,

总是与听众有关 服务也在运行。

这是列表代码:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server)
      (PROGRAM = extproc)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-4R5A2SG)(PORT = 1521))
    )
  )

DEFAULT_SERVICE_LISTENER = (SUIDO)

这是tnsname.ora代码:

SUIDO =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-4R5A2SG)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = SUIDO)
    )
  )

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

ORACLR_CONNECTION_DATA = 
  (DESCRIPTION = 
    (ADDRESS_LIST = 
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) 
    ) 
    (CONNECT_DATA = 
      (SID = CLRExtProc) 
      (PRESENTATION = RO) 
    ) 
  ) 

任何人都可以帮助我尽快解决这个问题。

2 个答案:

答案 0 :(得分:0)

首先报告ora-12154 - tns无法解析服务连接标识符。 此错误表示在tnsnames.ora中找不到您指定的连接目标。假设您指定了'sqlplus scott / tiger @ fubar'。然后在你的tnsnames中找不到'fubar'的引用。故事结局。这意味着请求永远不会离开客户端进程,也永远不会在侦听器附近,所以听众没什么关系。我在https://edstevensdba.wordpress.com/2018/09/19/troubleshooting-ora-12154/

上有更详细的解释和演示

答案 1 :(得分:0)

其次,你报告" SQLPLUS IBR / IBR @ SUIDO"返回" ORA-12514:TNS:监听器当前不知道连接中请求的服务"。" 这是一个截然不同的问题,答案截然不同。我从你的tnsnames文件中看到了“suido'解析为SUIDO'的服务名称在服务器' DESKTOP-4R5A2SG'上运行,它期望有一个使用端口1521的监听器,并且所述列表器知道服务&SUIDO'。错误' ORA-12514' 最终 表示侦听器不知道此类服务。您可以通过执行' lsnrctl status'来证明这一点。并观察听众所了解的服务。我说它已接近100%肯定听众不知道该服务,因为数据库没有启动。如果数据库已启动,则应该已经向侦听器注册了自己。

有关此错误的详细讨论here