Volgens Oracle worden deze locaties doorzocht op tnsnames.ora , resp. sqlnet.ora :
- huidig pad (gekoppeld aan de actieve clienttoepassing)
- Omgevingsvariabele
TNS_ADMINgedefinieerd voor de sessie - Omgevingsvariabele
TNS_ADMINgedefinieerd voor het systeem - Windows-registersleutel
HKLM\SOFTWARE\ORACLE\KEY_{ORACLE_HOME_NAME}\TNS_ADMIN(voor 64 bit) ofHKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{ORACLE_HOME_NAME}\TNS_ADMIN(voor 32 bit) %ORACLE_HOME%\network\admin
Ik weet echter niet zeker of elke applicatie/driver/versie deze lijst volgt. Deze lijst is geleverd door Oracle met betrekking tot versie 9i. Ik denk dat het u zal lukken om deze mappen door VBScript te doorzoeken.
Als ORACLE_HOME niet is ingesteld door de omgevingsvariabele, moet u het register HKLM\SOFTWARE\ORACLE\KEY_{ORACLE_HOME_NAME}\ORACLE_HOME opvragen (voor 64 bit) of HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{ORACLE_HOME_NAME}\ORACLE_HOME (voor 32 bit)
Voor ORACLE_HOME_NAME je moet naar je Oracle bin . gaan map (te vinden via %PATH% omgevingsvariabele) en open bestand oracle.key . Dit is een eenvoudig tekstbestand met alleen de ORACLE_HOME_NAME waarde, bijv. OraClient11g_home1 .
Meestal is er echter maar één Oracle Home onder HKLM\SOFTWARE\ORACLE , dus zoeken en lezen van bestand oracle.key is misschien een overkill.
Bijwerken
Als ik een test op mijn computer uitvoer (met Oracle Client 11.2) krijg ik de volgende volgorde:
- Omgevingsvariabele
TNS_ADMIN HKLM\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN, resp.HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN-> Alleen alsTNS_ADMINOmgevingsvariabele is niet ingesteld.%ORACLE_HOME%\network\admin- Huidige map (die kan verschillen van de map waarin uw toepassing zich bevindt)
- Map waarin uw toepassing zich bevindt
Voor een diepgaande analyse moet je zoeken naar tnsnames.ora , sqlnet.ora en ldap.ora . De Oracle-databasenaam kan via elk van hen worden opgelost, d.w.z. er kan een verbinding tot stand worden gebracht, zelfs wanneer tnsnames.ora en sqlnet.ora bestaan niet.