Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle tnsconnect显示操作超时_Oracle_Oracle11g - Fatal编程技术网

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

以下是我的用例:

  • 我们正在使用虚拟机。几天前,我创建了新的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\Administrator\product\11.2.0\dbhome\u 1\network\admin\sqlnet.ora

    使用EZCONNECT适配器解析别名 正在尝试联系(描述=(连接数据=(服务名称=)(地址=(协议) COL=TCP(主机=9.142.60.187)(端口=1521))) TNS-12535:TNS:操作超时

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

    SQLNET.AUTHENTICATION\u SERVICES=(NTS)

    name.DIRECTORY_PATH=(TNSNAMES,EZCONNECT) ? ADR\u BASE=C:\app\Administrator\product\11.2.0\dbhome\u 1\log

    如何使我的sqlplus连接可用?
    有趣的是,我能够使用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