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_ADMIN
zdefiniowane dla sesji - Zmienna środowiskowa
TNS_ADMIN
zdefiniowany 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_ADMIN
ewent.HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN
-> Tylko jeśliTNS_ADMIN
Zmienna ś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ą.