交界ServerFault问题,但想我会第一次尝试在这里,因为我有运气在过去的Oracle问题。

我试图连接到从PHP Oracle数据库,并且我得到了下面的错误。

ORA-12505: TNS:listener does not currently know of SID given in connect descriptor

这是在错误PHP报告,以及错误显示在Oracle的LISTENER.LOG。

我的眼前的问题是解决这个错误。更大的问题,我想回答是Oracle如何连接模型的工作?

这是在我的本地Windows机器上运行,并一直工作到现在为止一个开发环境。不幸的是,环境被交给我(我没有将它设置)和人谁的没有设置它是不可用的,帮我调试。

如果我正在使用MySQL或PostgreSQL(两个系统,我更熟悉)类似的错误,我会检查以确保数据库的进程正在运行,然后尝试使用的用户名手动连接到数据库/密码/连接字符串。不幸的是,我不熟悉的Windows(比SQL开发人员等)的Oracle工具,我不知道什么是TNS:监听或SID是Oracle中的情况下(我模糊的想法,但模糊的想法很少帮助时您正在调试这样的事情)

任何一般性的建议,将不胜感激。

<强>每评论更新:

有一些在我的tnsnames.ora文件entires的,相关条目是

OBS2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = steel-ae39650)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = OBS2)
    )
  )

此不反映在实例列表中,当我运行

    LSNRCTL> services

所以我想我的下一个问题是,我怎么尝试手动启动该OBS2实例?

有帮助吗?

解决方案

一个TNS名字就像是一个别名到您的服务实例。 TNS侦听服务作为一种在这方面为您查找服务。它会失败与错误信息,如果你想通过TNS名称连接到实际的服务是无效的。

可以然后进行测试,看看是否TNS监听看到服务正确使用命令行工具:

%>lsnrctl services

应输出像下面这样:

Service "myservice" has 1 instance(s).
  Instance "myinstance", status READY, has 1 handler(s) for this service...
    Handler(s):
      "D000" established:0 refused:0 current:0 max:1002 state:ready
         DISPATCHER <machine: LOCALHOST, pid: 12345>
         (ADDRESS=(PROTOCOL=tcp)(HOST=LOCALHOST)(PORT=6789))

你能不能请张贴相关的TNS条目(在tnsnames.ora文件)?它位于ORAHOME \客户端或DB \ ADMIN \ NETWORK。如果你有客户端和服务器,确保tnsnames.ora文件的两个副本有正确的价值观,只要是安全的。

下面是在tnsnames.ora适当TNS名称定义称为“MYDB”的示例:

myDbAlias =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 12345)(QUEUESIZE = 100))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = myservice)
    )
  )

其他提示

只是想加入到这一点,因为我最近有驱使我坚果,直到我想通了,发生了什么事了类似的连接问题。

首先,关键字SID和SERVICE_NAME是不完全一样。这是我的第一个错误的假设。在许多环境中,你可以交换SID和SERVICE_NAME,但并非总是如此,这取决于

这是说,你的错误界外的问题:你指定的 SID 在连接字符串,而不是在 SERVICE_NAME 是TNSNAMES成功使用

所以,如果你指定在你的代码中的连接字符串,尝试在连接字符串中使用SERVICE_NAME关键字(*或者,如果你已经使用SERVICE_NAME,无法连接,请尝试使用SID关键字*)。

过于简单的回答,我知道,但轻易尝试,并可能挽救一个人有些头疼。

希望有所帮助。

麦克Atlas的答案是相当全面,但请注意,您可以连接到10G(或更高版本)的DB这不使用没有公布TNSNAME [//] HOST_NAME [:端口] [/ SERVICE_NAME]

HTH

下进行。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top