我在c:\ Oracle \ product \ 11.1.0 \ network \ ADMIN \ TNSNAMES.ORA文件中有以下条目。
enter code here
pvtest.world =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = xxxx.xxx.xxx)(PORT = 1521))
)
(CONNECT_DATA =
(SID = pvtest)
(SERVER = DEDICATED)
)
)
我可以使用TOAD成功连接。现在,当我尝试创建新的ODBC DSN时,它不允许我这样做。如何在TNS服务名称中指定端口号?
enter code here
收到以下错误:---------------------------
无法连接 SQLSTATE = S1000 [Oracle] [ODBC] [Ora] ORA-12514:TNS:监听器当前不知道连接描述符中请求的服务
答案 0 :(得分:2)
当您说可以与TOAD连接时,您是否可以在ODBC连接失败的情况下这样做?如果您可以连接到客户端PC上的任何工具,那么显然另一端的监听器知道该服务,因此您必须怀疑您的结束。可能有一个客户端工具试图在不同的位置到达PVTEST。
如果一个客户端工具可以连接而另一个不能连接,我首先会确认两个客户端都使用相同的tnsnames.ora文件。搜索您的客户端,看看是否还有其他tnsnames.ora文件,这些文件会暗示其他ORACLE_HOMES(Google如果您不知道它是什么)。
从命令行执行TNSPING并查看它是否到达主机。它还将讲述连接细节。
在TOAD中检查连接详细信息并确保它使用tnsnames连接,如果是,则使用tnsnames。
检查您的客户端是否设置了环境变量TNS_ADMIN。
答案 1 :(得分:1)
我对Oracle XE有这种阻止:
XE = (DESCRIPTION = (ADDRESS =(PROTOCOL = TCP)(HOST = test.acme.org)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE) ) )
如果您将其与您的定义进行比较,而不是存在“SERVICE_NAME”参数。