我们最近改变了物理数据库的,新的服务器,新的地点,相同的数据库架构和数据,因为在变化,每当我们试图直接在我们自己的桌面型应用程序连接到数据库有关的,我们得到这个错误的时间的一半:

SQL*Loader-704: Internal error: ulconnect: OCIServerAttach[0]
ORA-12545: Connect failed because target host or object does not exist

的其余时间,它连接马上没有任何问题。我们是通过JDBC建立连接的应用程序似乎没有任何问题,但通过的东西做一个tnsnames.ora中查找去时(或者至少是我的直觉),我们做的。 TNSPING工程100%,但使用的是Oracle可执行像SQLLDDR失败的时间的至少50%。这是我们的TSNNAMES文件的匿名snppet和TNSPING输出:

DB_CONNECTION =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 1.2.3.4)(PORT = 1521))
  )
  (CONNECT_DATA =
    (SERVICE_NAME = MY.URL.COM)
  )
)

和所述TNSPING:

C:\>TNSPING DB_CONNECTION
TNS Ping Utility for 32-bit Windows: Version 9.2.0.1.0

Copyright (c) 1997 Oracle Corporation.  All rights reserved.

Used parameter files:
C:\oracle\ora92\network\admin\sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
(HOST = 1.2.3.4)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = MY.URL.COM)))
OK (200 msec)

我有DB,这正是JDBC连接依靠但它添加到在tnsnames.ora不改善进行连接的可能性的SID。我不知道有足够的了解如何TNSNAMES文件正在使用由Oracle智能解决这个问题,所以如果您有任何建议或看到的东西,显然是缺失的,请让我知道。

编辑:新DB的可以是两个负载均衡数据库可以是问题的一部分

有帮助吗?

解决方案

我们最近有我们的应用程序类似的问题。该应用程序有时会连接到Oracle RAC,有时它会与ORA-12545投诉。 总之问题是服务器,而我们在使用TNSNAMES.ORA虚拟IP地址有一个真正的名字。一旦我们通过System32 \ drivers下添加的服务器名称映射到IP地址\等\ hosts文件,一切都开始正常工作。

我在我的博客写多一点 <无耻广告> http://dcarapic.blogspot.com/ 2009/04 /间断-ORA-12545-的error.html

其他提示

阿,总得爱间歇性问题:) (在下文中我不得不更换下划线,因为我不知道这个wiki语言转义字符)

您总是使用相同的操作系统用户连接并做TNSPING?

检查指向不同的tnsnames.ora位置的环境变量TNS [下划线] ADMIN。做客户端重复的tnsnames.ora的扫描;无论是在位置所指向的$ TNS [下划线] ADMIN或在不同$ ORACLE [下划线] HOMES(例如,如果你有2 Oracle客户端安装)。

同样确认您使用的是相同的$ ORACLE [下划线] HOME和$ PATH环境变量的所有连接尝试和TNSPING。 (例如总是相同的OS用户或每个用户具有相同的值)

我看到TNSPING输出报告版本9.2,所以这是不可能的,但在11g的DB与可能需要一分钟左右听者寄存器。 (也许还按10g如此)。尝试连接在此之前将不会找到目标。

另一种可能性不太可能 - 与相同的服务名称的服务仍然标榜旧主机服务器上?如果在所有可能将其删除。

之后,我就开始看网络本身。在服务器总是成功的,快速的ping?如果你正在使用的主机名,而不是IP在tnsnames.ora,确实主机名可靠地分辨正确的IP(NSLOOKUP)。是否有一个本地防火墙,如果是被它表现?

此致 卡尔

如果使用的是Oracle 10g,你可以使用一个Easy Connect处理程序,而不是:

//servername/instancename

//1.2.3.4/my.url.com

你的情况。

这是免疫的很多TNSNAMES问题

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top