Laut Oracle werden diese Orte nach tnsnames.ora durchsucht , bzw. sqlnet.ora :
- aktueller Pfad (der laufenden Client-Anwendung zugeordnet)
- Umgebungsvariable
TNS_ADMINfür die Sitzung definiert - Umgebungsvariable
TNS_ADMINfür das System definiert - Windows-Registrierungsschlüssel
HKLM\SOFTWARE\ORACLE\KEY_{ORACLE_HOME_NAME}\TNS_ADMIN(für 64 Bit) oderHKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{ORACLE_HOME_NAME}\TNS_ADMIN(für 32 Bit) %ORACLE_HOME%\network\admin
Ich bin mir jedoch nicht sicher, ob jede Anwendung/Treiber/Version dieser Liste folgt. Diese Liste wurde von Oracle in Bezug auf Version 9i bereitgestellt. Ich denke, Sie werden es schaffen, diese Ordner per VBScript abzufragen.
Wenn ORACLE_HOME nicht durch die Umgebungsvariable gesetzt wird, müssen Sie die Registrierung HKLM\SOFTWARE\ORACLE\KEY_{ORACLE_HOME_NAME}\ORACLE_HOME abfragen (für 64 Bit) oder HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{ORACLE_HOME_NAME}\ORACLE_HOME (für 32 Bit)
Für ORACLE_HOME_NAME Sie müssen zu Ihrem Oracle bin navigieren Ordner (zu finden über %PATH% Umgebungsvariable) und öffnen Sie die Datei oracle.key . Dies ist eine einfache Textdatei, die nur den ORACLE_HOME_NAME enthält Wert, z. OraClient11g_home1 .
Normalerweise gibt es jedoch nur ein Oracle Home unterhalb von HKLM\SOFTWARE\ORACLE , also Suchen und Lesen der Datei oracle.key könnte ein Overkill sein.
Aktualisieren
Wenn ich einen Test auf meinem Rechner (mit Oracle Client 11.2) durchführe, erhalte ich folgende Reihenfolge:
- Umgebungsvariable
TNS_ADMIN HKLM\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN, bzw.HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN-> Nur wennTNS_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
Für eine tiefgehende Analyse müssen Sie nach tnsnames.ora suchen , sqlnet.ora und ldap.ora . Über jeden kann der Oracle-Datenbankname aufgelöst werden, d.h. es kann auch bei tnsnames.ora eine Verbindung aufgebaut werden und sqlnet.ora existieren nicht.