Enligt Oracle söks dessa platser efter tnsnames.ora
, resp. sqlnet.ora
och ldap.ora
:
- Oracle Net-filer i nuvarande arbetskatalog (PWD/CWD)
TNS_ADMIN
definieras sessionsvis eller av användardefinierat skriptTNS_ADMIN
definieras som en global miljövariabelTNS_ADMIN
definieras 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_ADMIN
definieras av miljövariabelTNS_ADMIN
definieras i registret (omTNS_ADMIN
miljövariabel finns inte)%ORACLE_HOME%/network/admin
katalog (omTNS_ADMIN
miljö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_ADMIN
Miljö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.ora
fil på den plats som anges avTNS_ADMIN
i .NET-konfigurationsfilen. - datakällans alias i
tnsnames.ora
fil som finns i samma katalog som.exe
. - datakällans alias i
tnsnames.ora
fil som finns på%TNS_ADMIN%
(där%TNS_ADMIN%
är en miljövariabelinställning). - datakällans alias i
tnsnames.ora
fil 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
dataSources
avsnittet under<oracle.manageddataaccess.client>
avsnittet i .NET-konfigurationsfilen (dvs.machine.config
,web.config
,user.config
). - datakällans alias i
tnsnames.ora
fil på den plats som anges avTNS_ADMIN
i .NET-konfigurationsfilen. Platser kan bestå av antingen absoluta eller relativa katalogsökvägar. - datakällans alias i
tnsnames.ora
fil 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.