Oracle tnsconnect显示操作超时
以下是我的用例:Oracle tnsconnect显示操作超时,oracle,oracle11g,Oracle,Oracle11g,以下是我的用例: 我们正在使用虚拟机。几天前,我创建了新的Oracle数据库。我克隆了这台机器,它有不同的IP地址 今天我想使用SQLPlus连接到数据库,但我发现连接超时了。我尝试了tnsping命令,下面是该命令的输出: C:\Users\Administrator>tnsping clm 用于64位Windows的TNS Ping实用程序:11.2.0.1.0版-2年1月9日生产 01408:36:31 版权所有(c)1997年,2010年,甲骨文。版权所有 使用的参数文件: C:\app
有趣的是,我能够使用jdbc驱动程序连接到数据库,并且工作正常。将
(HOST=9.142.60.187)
中的ip地址更改为服务器的当前ip地址。可能在JDBC驱动程序中,您使用的是主机名而不是ip地址,这就是它工作的原因。您也可以尝试在(host=9.142.60.187)
中给出主机名,例如,如果主机名是ora\u server,则将其更改为(host=ora\u server)
您的sqlnet.ora被配置为首先尝试使用TNSNAMES(TNSNAMES.ora位于您的TNS\u管理导向文件夹中,如注册表中所定义,环境变量或从默认位置获取)要将clm
解析为通过网络的路径,请将SQL*Net映射到TCP/IP以及其他可能的路径
从你那似乎无法解决的问题。因此,SQL*Net会尝试第二种方法:EZCONNECT
可能您正在某处使用一个EZCONNECT连接字符串,如user/pwd@//9.142.60.187,但没有服务名称和端口。或者我对EZCONNECT的了解太简单;不知何故,它似乎将clm
转换为//9.142.60.187
这可以通过以下问题的答案来解释:DNS或主机文件中是否有主机名clm
映射到9.142.60.187?
我不建议使用EZCONNECT,我总是喜欢使用tnsnames.ora硬编码,指定所需的一切。EZCONNECT仍然可以工作
您可以在示例中包含克隆的IP地址吗?
您能否将
ping clm
和nslookup clm
的结果包括在您的示例中?由于tnsping clm
正在使用EZConnect,您的tnsnames.ora
没有名为clm
的连接别名,但是clm
正在作为主机名解析为9.142.60.187
。默认情况下,它使用端口1521,因为它没有使用特定端口的指令。与该地址或至少该端口的连接正在超时-它可能不存在,可能路由到无法访问的地方,或者可能被防火墙阻止
ping clm
应显示相同的地址,并且可能也会超时。该主机可能存在于您的hosts
文件中,或者正在由DNS解析,可能会附加一个默认域,ping
也会显示该域。如果它是旧服务器的名称,您可能需要更新主机
文件,这可能会神奇地让它开始工作
如果您的数据库实际上被称为CLM
,那么您可以在tnsnames.ora
中创建一个条目,指向您的侦听器的正确IP地址,您的JDBC连接已经在使用该地址。或者您可以使用EZConnect格式作为连接字符串;类似于sqlplus user/password@/:1521/
。如果您不确定,可以使用lsnrctl services
检查IP地址、端口和服务名称
如果您与数据库位于同一主机上,则无需执行任何操作;大概您当前正在尝试
sqlplus用户/password@clm
,但是如果设置了ORACLE\u SID
,您只需执行sqlplus用户/密码
,就不会给侦听器带来麻烦。我应该在哪里更改此值?获取ORACLE服务器的主机名或IP地址,并在tnsnames.ora文件中更新它。这里有(HOST=9.142.60.187)
,将其更改为(HOST=)
或(HOST=)
。如果这不起作用,那么遵循Alex和Guido的建议。好的。看来我真的是甲骨文里的拉默。我认为tnsping
的参数应该是数据库名,而不是主机名。只是我使用了错误的命令。我将创建我的真实问题单独的职位。感谢帮助:)您好,tnsping的参数既不是数据库名也不是主机名。这就是所谓的“服务名称”。通过指定的机制列表解析服务名称。将其与UNIX上resolv.conf的内容进行比较。一个可能的服务名称解析是主机名(EZCONNECT),另一个是在tnsnames.ora中查找,还有其他可用的。我不同意EZCONNECT太难使用的说法。我讨厌维护TNSNAMES.ORA文件,尤其是在多工作站环境中。主机名和服务名似乎不会随意更改(不可预测),因此构造TNSPING host.domain:1521/service_NAME更稳定。也就是说,请务必确保EZCONNECT在您的SQLNET.ORA设置>>>名称中不是第一个。DIRECTORY_PATH=(TNSNAMES,EZCONNECT)不是名称。DIRECTORY_PATH=(EZCONNECT,TNSNAMES),因为当您输入TNSPING SOME_DB_别名时,后者将返回不存在的随机IP