Laut Oracle werden diese Orte nach tnsnames.ora durchsucht , bzw. sqlnet.ora und ldap.ora :
- Oracle Net-Dateien im aktuellen Arbeitsverzeichnis (PWD/CWD)
TNS_ADMINSitzungsabhängig oder durch benutzerdefiniertes Skript definiertTNS_ADMINals globale Umgebungsvariable definiertTNS_ADMINin der Registry definiert- Oracle Net-Dateien in
%ORACLE_HOME/network|net80\admin(Oracle-Standardspeicherort)
Ich bin mir jedoch nicht sicher, ob jede Anwendung/jeder Treiber dieser Liste folgt. Ich habe diese Liste aus dem Oracle-Dokument 111942.1, das sich auf Oracle 9i bezieht, also könnte sie veraltet sein.
Im Database Net Services Administrator's Guide ist die Reihenfolge
TNS_ADMINdefiniert durch UmgebungsvariableTNS_ADMINin der Registry definiert (fallsTNS_ADMINUmgebungsvariable ist nicht vorhanden)%ORACLE_HOME%/network/adminVerzeichnis (wennTNS_ADMINUmgebungsvariable ist nicht vorhanden)
Ich würde empfehlen, eine Umgebungsvariable für TNS_ADMIN zu definieren und verwenden Sie nur eine tnsnames.ora-Datei. Überprüfen Sie sicherheitshalber auch Ihre Registry-Werte.
Wenn Ihre Dateien nicht sind befindet sich in %ORACLE_HOME%\network\admin , empfehle ich, einen symbolischen Link dafür zu erstellen - nur um ganz auf dem Laufenden zu bleiben sichere Seite, z.B. mklink /d %ORACLE_HOME%\network\admin c:\Oracle\common\settings\admin
Eine weitere Anmerkung, Sie müssen nicht mit Ihrer tnsnames.ora-Datei "spielen". Mit Process Monitor von Microsoft Sysinternals können Sie jeden Dateizugriff überwachen, d.h. der Filter wäre Path contains tnsnames
Aktualisieren
Wenn ich einen Test auf meinem Rechner durchführe, erhalte ich folgende Reihenfolge:
- Umgebungsvariable
TNS_ADMIN - Registrierungsschlüssel
HKEY_CURRENT_USER\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN -
Registrierungsschlüssel
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN, bzw.HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN-> Nur wenn
TNS_ADMINUmgebungsvariable ist nicht gesetzt. %ORACLE_HOME%\network\admin- Aktuelles Verzeichnis (das sich von dem Verzeichnis unterscheiden kann, in dem sich Ihre Anwendung befindet)
- Ordner, in dem sich Ihre Anwendung befindet
Aktualisierung 2
Offensichtlich gibt es keine Fix-Suche, sie variiert je nach Anbieter/Treiber. Vielleicht hängt es auch von der Oracle-Version ab.
Zum Beispiel der Oracle HTTP Server liest TNS_ADMIN Einstellung aus opmn.xml config-Datei.
Ein weiteres Beispiel für ODP.NET Managed Driver (Oracle.ManagedDataAccess) Beta Version habe ich diese Bestellung bei Oracle Managed und TNS Names :
gefunden- Datenquellenalias im Abschnitt „dataSources“ unter
<oracle.manageddataaccess.client>Abschnitt in der .NET-Konfigurationsdatei (z. B.machine.config,web.config,user.config). - Datenquellenalias in
tnsnames.oraDatei an dem durchTNS_ADMINangegebenen Speicherort in der .NET-Konfigurationsdatei. - Datenquellenalias in
tnsnames.oraDatei im gleichen Verzeichnis wie.exevorhanden . - Datenquellenalias in
tnsnames.oraDatei vorhanden unter%TNS_ADMIN%
(wobei%TNS_ADMIN%ist eine Umgebungsvariableneinstellung). - Datenquellenalias in
tnsnames.oraDatei vorhanden unter%ORACLE_HOME%\network\admin
(wobei%ORACLE_HOME%ist eine Umgebungsvariableneinstellung).
In der offiziellen Dokumentation (12c Release 4 (12.1.0.2.4)) heißt es:
- Datenquellenalias in den
dataSourcesAbschnitt unter<oracle.manageddataaccess.client>Abschnitt in der .NET-Konfigurationsdatei (z. B.machine.config,web.config,user.config). - Datenquellenalias in
tnsnames.oraDatei an dem durchTNS_ADMINangegebenen Speicherort in der .NET-Konfigurationsdatei. Speicherorte können entweder aus absoluten oder relativen Verzeichnispfaden bestehen. - Datenquellenalias in
tnsnames.oraDatei im gleichen Verzeichnis wie.exevorhanden .
Basierend auf einigen Tests, die ich mit ODP.NET Managed Driver (4.121.2.0) durchgeführt habe, ist jedoch %ORACLE_HOME%\network\admin erforderlich und TNS_ADMIN Umgebungsvariable berücksichtigt. Sperren wie die Dokumentation ist nicht 100% korrekt.