2015-04-23 5 views
6

Ich weiß, ich weiß, Sie werden mir sagen, dass ich meine Pfade und Registrierung überprüfen soll. Ich habe, glaube mir.TNS: Ich konnte die angegebene Verbindungskennung nicht auflösen. Ich habe die Recherche durchgeführt.

Meine Situation - wir haben zwei Boxen mit identischem Code mit identischen web.config-Dateien. Unten sind die Spezifikationen von beiden.

  • IIS 7.0 konfiguriert ist, die app-Pool um Mitternacht
  • Oracle.ManagedDataAccess.dll, v 4.121.1.0
  • .NET 4.0 ASP.NET-Website

Relevante Konfigurations Abschnitt zurück:

<oracle.manageddataaccess.client> 
     <version number="*"> 
      <settings> 
       <setting name="TraceFileName" value="C:\MDM\TraceLog\"/> 
       <setting name="TraceLevel" value="7"/> 
       <setting name="SelfTuning" value="0"/> 
       <setting name="TNS_ADMIN" value="C:\MDM\tnsnames"/> 
      </settings> 
     </version> 
</oracle.manageddataaccess.client> 

Unsere Probleme begannen, als wir von unmanaged Oracle auf Managed umstellten.

Problembeschreibung: Die Hauptseite unserer Website verfügt über eine automatische Aktualisierungsfunktion, so dass alle 2 Minuten die Seite neu geladen wird. Einige unserer Nutzer lassen es offen, wenn sie am Ende des Tages gehen. Um Mitternacht recycelt der App-Pool. Seit der Freigabe der Oracle.ManagedDataAccess.dll, die wir konsistent erhalten haben, konnten die Verbindungsbezeichnerfehler, die bei jedem Aufruf der Datenbank bestehen bleiben, bis der App-Pool wiederverwendet wird, zu diesem Zeitpunkt nicht behoben werden funktioniert gut.

Oracle.ManagedDataAccess.Client.OracleException (0x80004005): ORA-12154: TNS:could not resolve the connect identifier specified ---> OracleInternal.Network.NetworkException (0x00002F7A): ORA-12154: TNS:could not resolve the connect identifier specified 
     at OracleInternal.Network.AddressResolution..ctor(String TNSAlias, String instanceName) 
     at OracleInternal.Network.OracleCommunication.DoConnect(String tnsDescriptor) 
     at OracleInternal.ServiceObjects.OracleConnectionImpl.Connect(ConnectionString cs, Boolean bOpenEndUserSession, String instanceName) 
     at OracleInternal.ConnectionPool.PoolManager`3.CreateNewPR(Int32 reqCount, Boolean bForPoolPopulation, ConnectionString csWithDiffOrNewPwd, String instanceName) 
     at OracleInternal.ConnectionPool.PoolManager`3.Get(ConnectionString csWithDiffOrNewPwd, Boolean bGetForApp, String affinityInstanceName, Boolean bForceMatch) 
     at OracleInternal.ConnectionPool.OraclePoolManager.Get(ConnectionString csWithNewPassword, Boolean bGetForApp, String affinityInstanceName, Boolean bForceMatch) 
     at OracleInternal.ConnectionPool.OracleConnectionDispenser`3.Get(ConnectionString cs, PM conPM, ConnectionString pmCS, SecureString securedPassword, SecureString securedProxyPassword) 
     at Oracle.ManagedDataAccess.Client.OracleConnection.Open() 

TNSPING kann ohne Probleme eine Verbindung zu den Datenbanken herstellen. Ich habe Seiten verlassen, die beide Boxen direkt gestern Abend geöffnet haben, und nur einer von ihnen hat dieses Problem angezeigt. Die Datei tnsnames.ora befindet sich auf beiden Computern im Verzeichnis c: \ mdm \ tnsnames. Die Datei tnsnames.ora ist die aktuellste Datei unseres DB-Teams.

Der ärgerlichste Teil davon ist, dass die Verbindungen wunderbar funktionieren, sobald der App-Pool zurückgesetzt wird. Keine Probleme, keine Auswirkungen auf die Leistung, und es erschien überhaupt nicht in unseren unteren Umgebungen. Ich bin nicht in der Lage, ein Ablaufverfolgungsprotokoll bereitzustellen, da unabhängig davon, was ich mit den Ablaufverfolgungseinstellungen anwende, im Verzeichnis c: \ mdm \ tracelog nichts angezeigt wird.

Wer hat irgendwelche Ideen, warum das passiert?

EDITS: Es gibt keine Umgebungsvariable TNS_ADMIN; Die Registrierungsvariable zeigt auf denselben Speicherort wie die Konfigurationsdatei.

Alle Benutzer haben die volle Berechtigung für die Datei tnsnames.ora.

Es gibt nur zwei Dateien tnsnames.ora, meine und die in der vorherigen Installation enthaltene Beispieldatei. Es gibt drei sqlnet.ora-Dateien, eine im selben Verzeichnis wie die Datei tnsnames.ora, eine im Ordner% ORACLEHOME% \ network \ admin und eine im Ordner% ORACLEHOME% \ network \ admin \ sample.

+1

Haben Sie Ihre Pfade und Registry überprüfen? Oh, vergiss nicht – moffeltje

+0

Was ist der Inhalt von 'sqlnet.ora' Datei? Durchsuchen Sie die Maschine nach anderen 'sqlnet.ora' und' tnsnames.ora' Dateien. Haben Sie die Umgebungsvariable 'TNS_ADMIN' anders eingestellt? –

+0

Es gibt keine Umgebungsvariable TNS_ADMIN; Die Registrierungsvariable zeigt auf denselben Speicherort wie die Konfigurationsdatei. Wäre die .config nicht vorrangig vor diesen Einstellungen? – Marisa

Antwort

0

Wenn alles beim Zurücksetzen des AppPools funktioniert, klingt es nicht so, als wäre es mit TNSNAMES.ORA verbunden. Es klingt eher so, als würde der AppPool stoppen, aber nicht recyceln.

Sie haben auch erwähnt, dass sich Ihre Hauptseiten alle zwei Minuten aktualisieren und den Server treffen, wenn sie den Server beim Recycling des AppPools treffen und fehlschlagen. Könnte dies dazu führen, dass der Rapid-Fail-Schutz des AppPools ihn herunterfährt? Der AppPool verfügt über eine Option zum Erzeugen eines Recycle-Ereignisprotokolleintrags. Standardmäßig wird nicht viel angezeigt, Sie müssen auswählen, was Sie aufzeichnen möchten.Dieses Protokoll enthält möglicherweise mehr Hinweise darauf, warum das Recycling-Ereignis nicht fliegt.

Das Protokoll selbst ist ein wenig schwer zu finden, hier ist ein Link, der Ihnen helfen kann:

https://webmasters.stackexchange.com/questions/17630/which-event-log-file-does-iis-7-app-pool-log-to

Verwandte Themen