Enligt Oracle söks dessa platser efter tnsnames.ora , resp. sqlnet.ora och ldap.ora :
- Oracle Net-filer i nuvarande arbetskatalog (PWD/CWD)
TNS_ADMINdefinieras sessionsvis eller av användardefinierat skriptTNS_ADMINdefinieras som en global miljövariabelTNS_ADMINdefinieras i registret- Oracle Net-filer i
%ORACLE_HOME/network|net80\admin(Oracles standardplats)
Jag är dock inte säker på om varje applikation/drivrutin följer denna lista. Jag fick den här listan från Oracle Document 111942.1 som hänvisar till Oracle 9i, så den kan vara föråldrad.
I Database Net Services Administrator's Guide är ordningen
TNS_ADMINdefinieras av miljövariabelTNS_ADMINdefinieras i registret (omTNS_ADMINmiljövariabel finns inte)%ORACLE_HOME%/network/adminkatalog (omTNS_ADMINmiljövariabel finns inte)
Jag skulle rekommendera att definiera en miljövariabel för TNS_ADMIN och använd endast en tnsnames.ora-fil. För att vara på den säkra sidan, kontrollera även dina registervärden.
Om dina filer är inte finns i %ORACLE_HOME%\network\admin , jag rekommenderar att du skapar en symbolisk länk för det - bara för att vara på mycket säkra sidan, t.ex. mklink /d %ORACLE_HOME%\network\admin c:\Oracle\common\settings\admin
En annan notering, du behöver inte "leka" med din tnsnames.ora-fil. Med Process Monitor från Microsoft Sysinternals kan du övervaka varje filåtkomst, d.v.s. filtret skulle vara Path contains tnsnames
Uppdatera
När jag kör ett test på min maskin får jag följande order:
- Miljövariabel
TNS_ADMIN - Registernyckel
HKEY_CURRENT_USER\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN -
Registernyckel
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN, resp.HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN-> Endast om
TNS_ADMINMiljövariabeln är inte inställd. %ORACLE_HOME%\network\admin- Aktuell katalog (som kan skilja sig från katalogen där ditt program finns)
- Mapp där din applikation finns
Uppdatering 2
Uppenbarligen finns det ingen fixsökning, det varierar för olika leverantörer/drivrutiner. Kanske beror det också på Oracle-versionen.
Till exempel Oracle HTTP Server läser TNS_ADMIN inställning från opmn.xml konfigurationsfil.
Ett annat exempel, för ODP.NET Managed Driver (Oracle.ManagedDataAccess) beta version, hittade jag den här beställningen på Oracle Managed and TNS Names :
- datakällalias i avsnittet "datakällor" under
<oracle.manageddataaccess.client>avsnittet i .NET-konfigurationsfilen (dvs.machine.config,web.config,user.config). - datakällans alias i
tnsnames.orafil på den plats som anges avTNS_ADMINi .NET-konfigurationsfilen. - datakällans alias i
tnsnames.orafil som finns i samma katalog som.exe. - datakällans alias i
tnsnames.orafil som finns på%TNS_ADMIN%
(där%TNS_ADMIN%är en miljövariabelinställning). - datakällans alias i
tnsnames.orafil som finns på%ORACLE_HOME%\network\admin
(där%ORACLE_HOME%är en miljövariabelinställning).
I officiell dokumentation (12c Release 4 (12.1.0.2.4)) står det:
- datakällans alias i
dataSourcesavsnittet under<oracle.manageddataaccess.client>avsnittet i .NET-konfigurationsfilen (dvs.machine.config,web.config,user.config). - datakällans alias i
tnsnames.orafil på den plats som anges avTNS_ADMINi .NET-konfigurationsfilen. Platser kan bestå av antingen absoluta eller relativa katalogsökvägar. - datakällans alias i
tnsnames.orafil som finns i samma katalog som.exe.
Men baserat på några tester jag gjorde med ODP.NET Managed Driver (4.121.2.0) tar det %ORACLE_HOME%\network\admin och TNS_ADMIN Miljövariabel beaktas. Lås som dokumentationen är inte 100 % korrekta.