Według Oracle te lokalizacje są wyszukiwane dla tnsnames.ora ewent. sqlnet.ora :
- bieżąca ścieżka (powiązana z uruchomioną aplikacją kliencką)
- Zmienna środowiskowa
TNS_ADMINzdefiniowane dla sesji - Zmienna środowiskowa
TNS_ADMINzdefiniowany dla systemu - Klucz rejestru Windows
HKLM\SOFTWARE\ORACLE\KEY_{ORACLE_HOME_NAME}\TNS_ADMIN(dla wersji 64-bitowej) lubHKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{ORACLE_HOME_NAME}\TNS_ADMIN(dla wersji 32-bitowej) %ORACLE_HOME%\network\admin
Nie jestem jednak pewien, czy każda aplikacja/sterownik/wersja podąża za tą listą. Ta lista została dostarczona przez Oracle w związku z wersją 9i. Myślę, że uda Ci się przeszukać te foldery za pomocą VBScript.
Jeśli ORACLE_HOME nie jest ustawiona przez zmienną środowiskową, musisz wykonać zapytanie do rejestru HKLM\SOFTWARE\ORACLE\KEY_{ORACLE_HOME_NAME}\ORACLE_HOME (dla wersji 64-bitowej) lub HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{ORACLE_HOME_NAME}\ORACLE_HOME (dla wersji 32-bitowej)
Dla ORACLE_HOME_NAME musisz przejść do swojego bin Oracle folder (do znalezienia przez %PATH% zmienna środowiskowa) i otwórz plik oracle.key . To jest prosty plik tekstowy zawierający tylko ORACLE_HOME_NAME wartość, np. OraClient11g_home1 .
Jednak zazwyczaj pod HKLM\SOFTWARE\ORACLE znajduje się tylko jeden Oracle Home. , więc szukanie i odczytywanie pliku oracle.key może być przesadą.
Aktualizacja
Kiedy uruchamiam test na moim komputerze (z Oracle Client 11.2) otrzymuję następującą kolejność:
- Zmienna środowiskowa
TNS_ADMIN HKLM\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMINewent.HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN-> Tylko jeśliTNS_ADMINZmienna środowiskowa nie jest ustawiona.%ORACLE_HOME%\network\admin- Aktualny katalog (który może być inny niż katalog, w którym znajduje się Twoja aplikacja)
- Folder, w którym znajduje się Twoja aplikacja
Aby uzyskać dogłębną analizę, musisz wyszukać tnsnames.ora , sqlnet.ora i ldap.ora . Nazwa bazy danych Oracle może być rozwiązana przez każdą z nich, tj. połączenie może zostać nawiązane nawet wtedy, gdy tnsnames.ora i sqlnet.ora nie istnieją.