Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Bestimmen des Speicherorts der relevanten tnsnames.ora-Datei

Laut Oracle werden diese Orte nach tnsnames.ora durchsucht , bzw. sqlnet.ora und ldap.ora :

  1. Oracle Net-Dateien im aktuellen Arbeitsverzeichnis (PWD/CWD)
  2. TNS_ADMIN Sitzungsabhängig oder durch benutzerdefiniertes Skript definiert
  3. TNS_ADMIN als globale Umgebungsvariable definiert
  4. TNS_ADMIN in der Registry definiert
  5. 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

  1. TNS_ADMIN definiert durch Umgebungsvariable
  2. TNS_ADMIN in der Registry definiert (falls TNS_ADMIN Umgebungsvariable ist nicht vorhanden)
  3. %ORACLE_HOME%/network/admin Verzeichnis (wenn TNS_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:

  1. Umgebungsvariable TNS_ADMIN
  2. Registrierungsschlüssel HKEY_CURRENT_USER\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN
  3. 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.

  4. %ORACLE_HOME%\network\admin
  5. Aktuelles Verzeichnis (das sich von dem Verzeichnis unterscheiden kann, in dem sich Ihre Anwendung befindet)
  6. 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
  1. Datenquellenalias im Abschnitt „dataSources“ unter <oracle.manageddataaccess.client> Abschnitt in der .NET-Konfigurationsdatei (z. B. machine.config , web.config , user.config ).
  2. Datenquellenalias in tnsnames.ora Datei an dem durch TNS_ADMIN angegebenen Speicherort in der .NET-Konfigurationsdatei.
  3. Datenquellenalias in tnsnames.ora Datei im gleichen Verzeichnis wie .exe vorhanden .
  4. Datenquellenalias in tnsnames.ora Datei vorhanden unter %TNS_ADMIN%
    (wobei %TNS_ADMIN% ist eine Umgebungsvariableneinstellung).
  5. 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:

  1. Datenquellenalias in den dataSources Abschnitt unter <oracle.manageddataaccess.client> Abschnitt in der .NET-Konfigurationsdatei (z. B. machine.config , web.config , user.config ).
  2. Datenquellenalias in tnsnames.ora Datei an dem durch TNS_ADMIN angegebenen Speicherort in der .NET-Konfigurationsdatei. Speicherorte können entweder aus absoluten oder relativen Verzeichnispfaden bestehen.
  3. 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.