tnsconnect显示操作超时

时间:2014-01-09 16:46:10

标签: oracle oracle11g

这是我的用例:

  
      
  1. 我们正在使用虚拟机。几天前我创建了新的Oracle数据库。我克隆了这台机器,它有不同的IP地址。
  2.   
  3. 今天我想用SQLPlus连接到数据库,但是我连接超时了。我尝试过tnsping命令,这是该命令的输出:
  4.         

    C:\ Users \ Administrator> tnsping clm

         

    适用于64位Windows的TNS Ping实用程序:版本11.2.0.1.0 - 生产于09-JAN-2   014 08:36:31

         

    版权所有(c)1997,2010,Oracle。保留所有权利。

         

    使用过的参数文件:   C:\应用\管理员\产品\ 11.2.0 \ dbhome_1 \网络\管理员\ SQLNET.ORA

         

    使用EZCONNECT适配器来解析别名   试图联系(DESCRIPTION =(CONNECT_DATA =(SERVICE_NAME =))(ADDRESS =(PROTO   COL = TCP)(HOST = 9.142.60.187)(PORT = 1521)))   TNS-12535:TNS:操作超时

奇怪的是,当前的数据库地址与9.142.60.187不同。 sqlnet.ora也不包含任何有趣的数据:

  

SQLNET.AUTHENTICATION_SERVICES =(NTS)

     

NAMES.DIRECTORY_PATH =(TNSNAMES,EZCONNECT)   ?   ADR_BASE = C:\ app \ Administrator \ product \ 11.2.0 \ dbhome_1 \ log

如何连接sqlplus? 有趣的是,我能够使用jdbc驱动程序连接到数据库,它工作正常。

3 个答案:

答案 0 :(得分:2)

您的sqlnet.ora配置为首先尝试使用TNSNAMES(TNS_ADMIN定向文件夹中的tnsnames.ora,如注册表,环境变量中所定义或从默认位置获取)来解析clm到您网络中的路径将SQL * Net映射到TCP / IP以及其他可能的映射。

从你的tnsping似乎无法解决。因此,SQL * Net尝试第二个:EZCONNECT。 See Oracle docs on that one

可能你正在使用某个EZCONNECT连接字符串,例如user /pwd@//9.4.60.187,没有服务名称和端口。或者我对EZCONNECT的了解太简单了;不知何故,似乎将clm翻译成//9.142.60.187这可能是由以下问题的答案解释的:您在DNS中的主机名clm或主机文件映射到9.142.60.187吗?

我不建议使用EZCONNECT,我总是喜欢硬编码tnsnames.ora,指定所需的一切。 EZCONNECT可以继续工作。

您可以在样本中包含克隆的IP地址吗?

您是否可以在示例中包含ping clmnslookup clm的结果?

答案 1 :(得分:0)

(HOST=9.142.60.187)中的IP地址更改为服务器的当前IP地址。可能在JDBC驱动程序中使用主机名而不是ip地址,这就是它工作的原因。您也可以尝试在(HOST=9.142.60.187)中提供主机名,例如,如果主机名是ora_server,则将其更改为(HOST=ora_server)

答案 2 :(得分:0)

由于tnsping clm正在使用EZConnect,因此tnsnames.ora没有名为CLM的连接别名,但clm正在被解析为9.142.60.187的主机名}。它默认使用端口1521,因为它没有使用特定端口的指令。然后,与该地址或至少该端口的连接超时 - 它可能不存在,可能在某处无法到达,或者可能被防火墙阻止。

ping clm应该显示相同的地址,并且可能也会超时。该主机可能存在于您的hosts文件中,或者正由DNS解析,可能会附加一个默认域,ping也会显示该主机。如果它是旧服务器的名称,您可能需要更新hosts文件,这可能会让它开始工作。

如果您的数据库实际上被称为CLM,那么您可以在tnsnames.ora中创建一个条目,指向您的JDBC连接已经使用的侦听器的正确IP地址。或者您可以使用EZConnect格式作为连接字符串;像sqlplus user/password@//<your IP>:1521/<your service name>这样的东西。如果您不确定,可以使用lsnrctl services检查IP地址,端口和服务名称。

如果您与数据库位于同一主机上,那么您也不需要这样做;大概你现在正在尝试sqlplus user/password@clm,但是如果设置了ORACLE_SID,你就可以sqlplus user/password,而且不会让听众感到麻烦。