Hinky Oracle连接(TNSNAMES.ora帮助)

Hinky Oracle连接(TNSNAMES.ora帮助),oracle,tnsnames,ora-12545,Oracle,Tnsnames,Ora 12545,我们最近更改了物理数据库、新服务器、新位置、相同的数据库架构和数据,自更改后,每当我们尝试在自己的桌面型应用程序中直接连接到数据库时,大约有一半的时间我们会遇到以下错误: SQL*Loader-704: Internal error: ulconnect: OCIServerAttach[0] ORA-12545: Connect failed because target host or object does not exist 其余时间,它会立即连接,没有任何问题。我们通过JDBC建立连

我们最近更改了物理数据库、新服务器、新位置、相同的数据库架构和数据,自更改后,每当我们尝试在自己的桌面型应用程序中直接连接到数据库时,大约有一半的时间我们会遇到以下错误:

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%工作,但使用像SQLLDDR这样的oracle可执行文件至少有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)
  )
)
以及TNG:

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的SID,这是JDBC连接所依赖的,但是将它添加到tnsnames.ora并不能提高建立连接的几率。我对oracle如何使用tnsnames文件智能地解决此问题知之甚少,因此如果您有任何建议或看到明显缺失的内容,请告诉我


编辑:新数据库可能是两个负载平衡的数据库,这可能是问题的一部分。

啊,我喜欢间歇性问题:) (在下面我不得不替换下划线字符,因为我不知道这种wiki语言的转义字符)

您是否总是使用同一个操作系统用户来连接和执行tnsping

检查指向不同tnsnames.ora位置的环境变量TNS[下划线]ADMIN。对客户机进行扫描,查找重复的tnsnames.ora;在$TNS[下划线]ADMIN指向的位置或不同的$ORACLE[下划线]主页中(例如,如果您有两个ORACLE客户端安装)

同样,检查所有连接尝试和tnsping是否使用相同的$ORACLE[下划线]HOME和$PATH环境变量。(例如,始终是同一操作系统用户或每个用户具有相同的值)

我看到tnsping输出报告版本9.2,所以这不太可能,但在11g中,DB向侦听器注册,这可能需要一分钟左右的时间。(10g可能也是如此)。在此之前尝试连接将找不到目标

另一个不太可能出现的可能性是,旧主机服务器上是否仍在播发具有相同服务名称的服务?如果可能,请将其拆下

在那之后,我将开始研究网络本身。服务器ping是否总是成功且快速?如果在tnsnames.ora中使用的是主机名而不是IP,那么主机名是否可靠地解析为正确的IP(nslookup)。是否有本地防火墙?如果有,它是否正常工作

问候
Karl

我们最近在应用程序中遇到了类似的问题。应用程序有时会连接到Oracle RAC,有时会向ORA-12545投诉。 简而言之,问题是当我们在TNSNAMES.ORA中使用虚拟IP地址时,服务器有一个真实的名称。一旦我们通过system32\drivers\etc\hosts文件添加了服务器名称到IP地址的映射,一切都开始正常工作

我在我的博客上写了更多

如果您使用的是
Oracle 10g
,则可以使用
Easy Connect
处理程序:

//servername/instancename
,

就你而言


它不受大量
TNSNAMES
问题的影响。

服务名称URL(MY.DOMAIN.COM)不能通过DNS解析为有效的URL(即,它不能通过PING'd或NSLOOKUP找到)。您在博客()中链接到您的文章非常棒。终于明白了为什么会发生这种情况以及如何解决它,这真是太好了
//1.2.3.4/my.url.com