SQLPLUS/OCI8=>ORA-12154:tns:无法解析指定的连接标识符(OCIError)

2022-04-22 00:00:00 ruby oracle oci8 sqlplus

我使用的是Windows 10Pro x64。我为我的Ruby环境安装了gem:ruby_oci8

我安装了Oracle C:instClient_12_2并添加到PATH,我还安装了SQLPLUS实用程序并添加到PATH

我需要连接到远程Oracle数据库

我的tnsnames.ora,由TNS_ADMIN->;C:Oracle指向 系统变量中的etworkadmin:

ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = <host>)(PORT = <port>))
    )
    (CONNECT_DATA =
      (SID = <sid>)
    )
  )

我对此还不熟悉。请帮我办一些其他的支票。

非常感谢!


解决方案

调试您看不到的东西几乎是不可能的,而且您提供的东西很少。为什么不使用复制和粘贴来准确地显示您所做的工作和确切的结果-完整的命令行和完整的响应?在你的后续评论中,你提到了其他几条错误消息,但同样没有上下文。

既然您提到了sqlplus和";run Connect@";,我就假定您的命令如下所示:

C:> sqlplus scott/tiger@orcl
在这种用法中,‘@’是一个分隔符,表示后面的内容(在本例中为‘ORCL’)是网络服务名。当sqlplus解析出命令行时,它将采用此值(‘orCL’)并在本地文件‘tnsnames.ora’中查找匹配项。默认情况下,它将位于%ORACLE_HOME/network/admin中。典型条目可能如下所示:

ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = somehostname)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

其中第一行是Sqlplus正在查找的网络服务名。如果找不到请求的网络服务名,则会得到‘ORA-12154:tns:无法解析指定的连接标识符’。这是一个非常明确的错误,它正好表示以下两种情况之一:1)找不到文件‘tnsnames.ora’,或2)找到了该文件,但没有所请求的网络服务名条目。

因此,您需要证明在预期位置中存在tnsnames.ora文件,并且该文件具有所请求的网络服务名称的条目。

相关文章