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_ADMINdefineret sessionelt eller af brugerdefineret scriptTNS_ADMINdefineret som en global miljøvariabelTNS_ADMINdefineret 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_ADMINdefineret af miljøvariabelTNS_ADMINdefineret i registreringsdatabasen (hvisTNS_ADMINmiljøvariabel er ikke til stede)%ORACLE_HOME%/network/adminbibliotek (hvisTNS_ADMINmiljø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_ADMINMiljø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.orafil på den placering, der er angivet afTNS_ADMINi .NET-konfigurationsfilen. - datakildealias i
tnsnames.orafil, der findes i samme mappe som.exe. - datakildealias i
tnsnames.orafil til stede på%TNS_ADMIN%
(hvor%TNS_ADMIN%er en miljøvariabel indstilling). - datakildealias i
tnsnames.orafil 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
dataSourcesafsnittet under<oracle.manageddataaccess.client>sektionen i .NET-konfigurationsfilen (dvs.machine.config,web.config,user.config). - datakildealias i
tnsnames.orafil på den placering, der er angivet afTNS_ADMINi .NET-konfigurationsfilen. Placeringer kan bestå af enten absolutte eller relative mappestier. - datakildealias i
tnsnames.orafil, 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.