Frage

Wir haben vor kurzem physische DB, neuen Server geändert, neue Standorte, gleiches Datenbank-Schema und Daten und da die Änderung über, wenn wir direkt an die DB in unseren eigenen Desktop-Typ-Anwendungen etwa die Hälfte der Zeit, dass wir diesen Fehler zu versuchen, eine Verbindung :

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

Der Rest der Zeit, es verbindet sofort ohne Probleme. Unsere Anwendungen, die Verbindungen über JDBC etablieren scheinen keine Probleme zu haben, aber wir tun, wenn sie durch etwas los, die eine tnsnames.ora Lookup tut (oder das ist meine Vermutung zumindest). TNSPING funktioniert 100%, aber ein Orakel ausführbare wie SQLLDDR fehl mindestens 50% der Zeit. Hier ist ein anonymisierter snppet unserer TSNNAMES-Datei und eine TNSPING Ausgabe:

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

Und das 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)

ich die SID des DB haben, das, was ist die JDBC-Verbindungen verlassen sich auf, aber es auf die tnsnames.ora Zugabe nicht verbessert die Chancen für eine Verbindung herzustellen. Ich weiß nicht genug darüber, wie die tnsnames Datei von Oracle verwendet wird, um auf intelligente Weise dieses Problem zu beheben, so, wenn Sie Anregungen haben oder etwas sehen, das offensichtlich fehlt lass es mich wissen.

EDIT:. Die neue DB kann der sein, zwei Lastenausgleich Datenbanken, den Teil des Problems sein kann

War es hilfreich?

Lösung

Wir hatten kürzlich ein ähnliches Problem mit unserer Anwendung. Die Anwendung würde manchmal auf die Oracle RAC verbinden und manchmal wäre es mit ORA-12545 beschweren. Kurz gesagt war das Problem, dass der Server einen richtigen Namen hatte, während wir virtuelle IP-Adressen in TNSNAMES.ORA verwendet wurden. Sobald wir die Zuordnung des Server-Namen zu IP-Adresse über system32 \ drivers \ etc \ hosts-Datei alles begann richtig zu arbeiten.

hinzugefügt

Ich habe ein bisschen mehr in meinem Blog geschrieben http://dcarapic.blogspot.com/ 2009/04 / Unterbrochen-ora-12545-error.html

Andere Tipps

Ah, ich muss lieben die intermittierende Probleme :) (Im Folgenden Ich hatte den Unterstrich zu ersetzen, wie ich weiß nicht, die Escape-Zeichen für diese Wiki Sprache)

Verwenden Sie immer den gleichen OS-Benutzer zu verbinden und das tnsping zu tun?

Überprüfen

für Umgebungsvariablen TNS [Strich] ADMIN zeigt auf verschiedenen tnsnames.ora Standorten. Führen Sie einen Scan des Client für doppelten tnsnames.ora; entweder an Orten, auf den $ TNS [Strich] ADMIN oder in verschiedenen $ ORACLE [unterstreichen] HÄUSER (z wenn Sie 2 Oracle-Client installiert).

Ebenso überprüfen, dass Sie die gleichen $ ORACLE [Strich] HOME und $ PATH Umgebungsvariablen für alle Verbindungsversuche und tnsping verwenden. (Zum Beispiel immer der gleiche O Benutzer oder jeder Benutzer hat die gleichen Werte)

Ich sehe, dass die tnsping Ausgabebericht Version 9.2 so dass dies nicht wahrscheinlich, aber die DB in 11g-Register mit dem Hörer, die eine Minute dauern oder so. (Vielleicht auch wahr, mit 10 g). Versuche, vor diesem verbinden wird das Ziel nicht gefunden.

Eine weitere Möglichkeit unwahrscheinlich - ist ein Dienst mit dem gleichen Service-Namen noch auf dem alten Host-Server ausgeschrieben? Entfernen Sie es, wenn überhaupt möglich.

Danach würde ich beginnen am Netzwerk selbst zu suchen. Ist ein Ping des Servers immer erfolgreich und schnell? Wenn Sie die Host-Namen anstelle von IP in der tnsnames.ora verwenden, hat der Host-Namen in die richtigen IP (nslookup) zuverlässig lösen. Gibt es eine lokale Firewall und wenn ja, ist es verhalten?

Viele Grüße Karl

Wenn Sie Oracle 10g verwenden, können Sie einen Easy Connect Handler statt:

//servername/instancename

//1.2.3.4/my.url.com

in Ihrem Fall.

Es ist immun gegen viel von TNSNAMES Fragen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top