Według Oracle te lokalizacje są wyszukiwane dla tnsnames.ora
, ew. sqlnet.ora
i ldap.ora
:
- Pliki Oracle Net w obecnym katalogu roboczym (PWD/CWD)
TNS_ADMIN
zdefiniowany sesyjnie lub za pomocą skryptu zdefiniowanego przez użytkownikaTNS_ADMIN
zdefiniowana jako globalna zmienna środowiskowaTNS_ADMIN
zdefiniowane w rejestrze- Pliki Oracle Net w
%ORACLE_HOME/network|net80\admin
(Domyślna lokalizacja Oracle)
Nie jestem jednak pewien, czy każda aplikacja/sterownik podąża za tą listą. Mam tę listę z Dokumentu Oracle 111942.1 odnoszącego się do Oracle 9i, więc może być nieaktualna.
W Przewodniku administratora usług sieciowych w bazie danych kolejność to
TNS_ADMIN
zdefiniowana przez zmienną środowiskowąTNS_ADMIN
zdefiniowane w rejestrze (jeśliTNS_ADMIN
zmienna środowiskowa nie jest obecna)%ORACLE_HOME%/network/admin
katalog (jeśliTNS_ADMIN
zmienna środowiskowa nie jest obecna)
Polecam zdefiniowanie zmiennej środowiskowej dla TNS_ADMIN
i używaj tylko jednego pliku tnsnames.ora. Aby być po bezpiecznej stronie, sprawdź również wartości rejestru.
Jeśli Twoje pliki nie znajduje się w %ORACLE_HOME%\network\admin
, polecam utworzyć dla niego dowiązanie symboliczne - żeby być na bardzo bezpieczna strona, m.in. mklink /d %ORACLE_HOME%\network\admin c:\Oracle\common\settings\admin
Kolejna uwaga, nie musisz "bawić się" swoim plikiem tnsnames.ora. Dzięki Process Monitor firmy Microsoft Sysinternals możesz monitorować dostęp do każdego pliku, tj. filtrem będzie Path contains tnsnames
Aktualizacja
Po uruchomieniu testu na moim komputerze otrzymuję następującą kolejność:
- Zmienna środowiskowa
TNS_ADMIN
- Klucz rejestru
HKEY_CURRENT_USER\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN
-
Klucz rejestru
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN
, ew.HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN
-> Tylko jeśli
TNS_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
Aktualizacja 2
Oczywiście nie ma wyszukiwania poprawek, różni się dla różnych dostawców/sterowników. Może to również zależy od wersji Oracle.
Na przykład Serwer HTTP Oracle czyta TNS_ADMIN
ustawienie z opmn.xml
plik konfiguracyjny.
Inny przykład, dla sterownika zarządzanego ODP.NET (Oracle.ManagedDataAccess) beta wersji, znalazłem to zamówienie w Oracle Managed i TNS Names :
- Alias źródła danych w sekcji „dataSources” w obszarze
<oracle.manageddataaccess.client>
sekcji w pliku konfiguracyjnym .NET (np.machine.config
,web.config
,user.config
). - alias źródła danych w pliku
tnsnames.ora
plik w lokalizacji określonej przezTNS_ADMIN
w pliku konfiguracyjnym .NET. - alias źródła danych w pliku
tnsnames.ora
plik znajduje się w tym samym katalogu co.exe
. - alias źródła danych w pliku
tnsnames.ora
plik obecny w%TNS_ADMIN%
(gdzie%TNS_ADMIN%
jest ustawieniem zmiennej środowiskowej). - alias źródła danych w pliku
tnsnames.ora
plik obecny w%ORACLE_HOME%\network\admin
(gdzie%ORACLE_HOME%
jest ustawieniem zmiennej środowiskowej).
W oficjalnej dokumentacji (12c Release 4 (12.1.0.2.4)) jest napisane:
- alias źródła danych w
dataSources
w sekcji<oracle.manageddataaccess.client>
sekcji w pliku konfiguracyjnym .NET (np.machine.config
,web.config
,user.config
). - alias źródła danych w pliku
tnsnames.ora
plik w lokalizacji określonej przezTNS_ADMIN
w pliku konfiguracyjnym platformy .NET. Lokalizacje mogą składać się z bezwzględnych lub względnych ścieżek katalogów. - alias źródła danych w pliku
tnsnames.ora
plik znajduje się w tym samym katalogu co.exe
.
Jednak w oparciu o niektóre testy, które wykonałem ze sterownikiem zarządzanym ODP.NET (4.121.2.0), zajmuje on %ORACLE_HOME%\network\admin
i TNS_ADMIN
Uwzględniona zmienna środowiskowa. Blokady takie jak dokumentacja nie są w 100% poprawne.