在 Oracle 服务器上,我可以使用以下方式进行连接:
状态如下:
当我尝试使用具有以下设置的 .Net 提供程序从我的开发人员计算机进行连接时:
我无法连接并收到以下错误:
我尝试使用 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/