Laut Oracle werden diese Orte nach tnsnames.ora
durchsucht , bzw. sqlnet.ora
und ldap.ora
:
- Oracle Net-Dateien im aktuellen Arbeitsverzeichnis (PWD/CWD)
TNS_ADMIN
Sitzungsabhängig oder durch benutzerdefiniertes Skript definiertTNS_ADMIN
als globale Umgebungsvariable definiertTNS_ADMIN
in 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_ADMIN
definiert durch UmgebungsvariableTNS_ADMIN
in der Registry definiert (fallsTNS_ADMIN
Umgebungsvariable ist nicht vorhanden)%ORACLE_HOME%/network/admin
Verzeichnis (wennTNS_ADMIN
Umgebungsvariable 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_ADMIN
Umgebungsvariable 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.ora
Datei an dem durchTNS_ADMIN
angegebenen Speicherort in der .NET-Konfigurationsdatei. - Datenquellenalias in
tnsnames.ora
Datei im gleichen Verzeichnis wie.exe
vorhanden . - Datenquellenalias in
tnsnames.ora
Datei vorhanden unter%TNS_ADMIN%
(wobei%TNS_ADMIN%
ist eine Umgebungsvariableneinstellung). - Datenquellenalias in
tnsnames.ora
Datei 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
dataSources
Abschnitt unter<oracle.manageddataaccess.client>
Abschnitt in der .NET-Konfigurationsdatei (z. B.machine.config
,web.config
,user.config
). - Datenquellenalias in
tnsnames.ora
Datei an dem durchTNS_ADMIN
angegebenen Speicherort in der .NET-Konfigurationsdatei. Speicherorte können entweder aus absoluten oder relativen Verzeichnispfaden bestehen. - Datenquellenalias in
tnsnames.ora
Datei im gleichen Verzeichnis wie.exe
vorhanden .
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.