Enligt Oracle söks dessa platser efter tnsnames.ora , resp. sqlnet.ora :
- aktuell sökväg (associerad med den pågående klientapplikationen)
- Miljövariabel
TNS_ADMINdefinieras för sessionen - Miljövariabel
TNS_ADMINdefinierat för systemet - Windows-registernyckel
HKLM\SOFTWARE\ORACLE\KEY_{ORACLE_HOME_NAME}\TNS_ADMIN(för 64 bitar) ellerHKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{ORACLE_HOME_NAME}\TNS_ADMIN(för 32 bitar) %ORACLE_HOME%\network\admin
Jag är dock inte säker på om varje applikation/drivrutin/version följer denna lista. Den här listan tillhandahölls av Oracle relaterad till version 9i. Jag tror att du kommer att klara av att söka efter dessa mappar med VBScript.
Om ORACLE_HOME inte ställs in av miljövariabeln måste du fråga registret HKLM\SOFTWARE\ORACLE\KEY_{ORACLE_HOME_NAME}\ORACLE_HOME (för 64 bitar) eller HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{ORACLE_HOME_NAME}\ORACLE_HOME (för 32 bitar)
För ORACLE_HOME_NAME du måste navigera till din Oracle bin mapp (finns via %PATH% miljövariabel) och öppna filen oracle.key . Detta är en enkel textfil som endast innehåller ORACLE_HOME_NAME värde, t.ex. OraClient11g_home1 .
Men vanligtvis finns det bara ett Oracle Home under HKLM\SOFTWARE\ORACLE , så söker och läser filen oracle.key kan vara en överdrift.
Uppdatera
När jag kör ett test på min dator (med Oracle Client 11.2) får jag följande order:
- Miljövariabel
TNS_ADMIN HKLM\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN, resp.HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN-> Endast omTNS_ADMINMiljövariabeln är inte inställd.%ORACLE_HOME%\network\admin- Aktuell katalog (som kan skilja sig från katalogen där ditt program finns)
- Mapp där din applikation finns
För en djupgående analys måste du söka efter tnsnames.ora , sqlnet.ora och ldap.ora . Oracle-databasnamnet kan lösas genom var och en av dem, d.v.s. en anslutning kan upprättas även när tnsnames.ora och sqlnet.ora finns inte.