Ifølge Oracle søges disse steder efter tnsnames.ora
, hhv. sqlnet.ora
og ldap.ora
:
- Oracle Net-filer i den nuværende arbejdsmappe (PWD/CWD)
TNS_ADMIN
defineret sessionelt eller af brugerdefineret scriptTNS_ADMIN
defineret som en global miljøvariabelTNS_ADMIN
defineret i registreringsdatabasen- Oracle Net-filer i
%ORACLE_HOME/network|net80\admin
(Oracle standardplacering)
Jeg er dog ikke sikker på, om hver applikation/driver følger denne liste. Jeg fik denne liste fra Oracle Document 111942.1, der henviser til Oracle 9i, så den kan være forældet.
I Database Net Services Administrator's Guide er rækkefølgen
TNS_ADMIN
defineret af miljøvariabelTNS_ADMIN
defineret i registreringsdatabasen (hvisTNS_ADMIN
miljøvariabel er ikke til stede)%ORACLE_HOME%/network/admin
bibliotek (hvisTNS_ADMIN
miljøvariabel er ikke til stede)
Jeg vil anbefale at definere en miljøvariabel for TNS_ADMIN
og brug kun én tnsnames.ora fil. For at være på den sikre side, tjek også dine registreringsdatabaseværdier.
Hvis dine filer er ikke placeret i %ORACLE_HOME%\network\admin
, anbefaler jeg at oprette et symbolsk link til det - bare for at være på meget sikker side, f.eks. mklink /d %ORACLE_HOME%\network\admin c:\Oracle\common\settings\admin
En anden note, du behøver ikke at "lege" med din tnsnames.ora fil. Med Process Monitor fra Microsoft Sysinternals kan du overvåge hver filadgang, dvs. filteret ville være Path contains tnsnames
Opdater
Når jeg kører en test på min maskine, får jeg følgende rækkefølge:
- Miljøvariabel
TNS_ADMIN
- Registreringsnøgle
HKEY_CURRENT_USER\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN
-
Registreringsnøgle
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN
, hhv.HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN
-> Kun hvis
TNS_ADMIN
Miljøvariablen er ikke indstillet. %ORACLE_HOME%\network\admin
- Nuværende bibliotek (som kan være forskellig fra det bibliotek, hvor din applikation er placeret)
- Mappe, hvor din applikation er placeret
Opdatering 2
Der er naturligvis ingen rettelsessøgning, det varierer for forskellige udbydere/drivere. Måske afhænger det også af Oracle-versionen.
For eksempel Oracle HTTP-serveren læser TNS_ADMIN
indstilling fra opmn.xml
konfigurationsfil.
Et andet eksempel, for ODP.NET Managed Driver (Oracle.ManagedDataAccess) beta version, fandt jeg denne ordre hos Oracle Managed and TNS Names :
- datakildealias i afsnittet "datakilder" under
<oracle.manageddataaccess.client>
sektionen i .NET-konfigurationsfilen (dvs.machine.config
,web.config
,user.config
). - datakildealias i
tnsnames.ora
fil på den placering, der er angivet afTNS_ADMIN
i .NET-konfigurationsfilen. - datakildealias i
tnsnames.ora
fil, der findes i samme mappe som.exe
. - datakildealias i
tnsnames.ora
fil til stede på%TNS_ADMIN%
(hvor%TNS_ADMIN%
er en miljøvariabel indstilling). - datakildealias i
tnsnames.ora
fil til stede på%ORACLE_HOME%\network\admin
(hvor%ORACLE_HOME%
er en miljøvariabel indstilling).
I officiel dokumentation (12c Release 4 (12.1.0.2.4)) står der:
- datakildealias i
dataSources
afsnittet under<oracle.manageddataaccess.client>
sektionen i .NET-konfigurationsfilen (dvs.machine.config
,web.config
,user.config
). - datakildealias i
tnsnames.ora
fil på den placering, der er angivet afTNS_ADMIN
i .NET-konfigurationsfilen. Placeringer kan bestå af enten absolutte eller relative mappestier. - datakildealias i
tnsnames.ora
fil, der findes i samme mappe som.exe
.
Men baseret på nogle test, jeg lavede med ODP.NET Managed Driver (4.121.2.0), tager det %ORACLE_HOME%\network\admin
og TNS_ADMIN
Miljøvariabel tages i betragtning. Låse som dokumentationen er ikke 100 % korrekte.