无法使用 .Net 提供程序从远程计算机访问 Oracle 12c 服务器

标签 oracle

在 Oracle 服务器上,我可以使用以下方式进行连接:

enter image description here

状态如下:

enter image description here

当我尝试使用具有以下设置的 .Net 提供程序从我的开发人员计算机进行连接时:

enter image description here

无法连接并收到以下错误:

enter image description here

我尝试使用 sqlplus:

sqlplus system/password@http://10.111.111.47:1521/Telefon

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

这是我的listener.ora文件内容:

# listener.ora Network Configuration File: C:\app\Oracle\product\12.1.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\app\Oracle\product\12.1.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:C:\app\Oracle\product\12.1.0\dbhome_1\bin\oraclr12.dll")
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
  )

防火墙已禁用。

我应该设置什么?

最佳答案

主机名中的任何一个位置都不应该包含 http:。 SQL*Plus 版本为:

sqlplus system/password@//10.111.111.47:1521/Telefon

假设服务名称与SID相同,但情况不一定如此;从您的 lsnrctl status 来看,它适合您,因此该部分应该没问题。

但是您的监听器仅在本地主机 127.0.0.1 上监听。这意味着它无法从其他任何地方联系到。您可能会收到该连接字符串的“无监听器”错误。您需要修改监听器配置,以便它监听外部 IP 地址 10.111.111.47,该地址希望是静态的且不是由 DHCP 分配的。如有必要,它可以监听两个地址:

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = AndrasWin7x64v1)(PORT = 1521))
    )
  )

假设 AndrasWin7x64v1 解析为 10.111.111.47,至少在该服务器内;如果没有,您可以使用 IP 地址代替:

      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.111.111.47)(PORT = 1521))

但同样,只有当服务器的 IP 是静态时才应使用 IP 地址;如果它是动态的(由 DHCP 分配),那么您应该使用在 listener.ora 中和从客户端解析到该地址的 DNS 名称,并且您可能应该这样做,即使它是静态以防将来必须更改。

关于无法使用 .Net 提供程序从远程计算机访问 Oracle 12c 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23676311/

相关文章:

c# - 如何通过 ADO.NET/C# 将数组/表参数用于 Oracle (ODP.NET 10g)?

sql - 空值会改变平均值吗?

java - 在 Oracle JDBC 驱动程序中,当您将 Java 日期写入 TIMESTAMP 列时,时区会发生什么变化?

sql - oracle sql 选择语法与 GROUP BY 和 HAVING 子句

sql - 通过 Oracle 存储过程函数查找耶稣受难日

oracle - 定期 tns-12531 : TNS: Cannot allocate memory

oracle - TIMESTAMP(6) Oracle 插入

java - 使用 myBatis 映射嵌套的 Oracle CURSOR (ResultSet)

database - 了解 Oracle 中的系统命名约定

c++ - OCCI与C++错误:TNS:.net服务名称未正确指定