Volgens Oracle worden deze locaties doorzocht op tnsnames.ora
, resp. sqlnet.ora
en ldap.ora
:
- Oracle Net-bestanden in huidige werkmap (PWD/CWD)
TNS_ADMIN
Sessie gedefinieerd of door een door de gebruiker gedefinieerd scriptTNS_ADMIN
gedefinieerd als een globale omgevingsvariabeleTNS_ADMIN
gedefinieerd in het register- Oracle Net-bestanden in
%ORACLE_HOME/network|net80\admin
(Standaardlocatie van Oracle)
Ik weet echter niet zeker of elke toepassing/driver deze lijst volgt. Ik heb deze lijst van Oracle Document 111942.1 die verwijst naar Oracle 9i, dus het kan verouderd zijn.
In de Database Net Services Administrator's Guide is de volgorde
TNS_ADMIN
gedefinieerd door omgevingsvariabeleTNS_ADMIN
gedefinieerd in het register (indienTNS_ADMIN
omgevingsvariabele is niet aanwezig)%ORACLE_HOME%/network/admin
directory (indienTNS_ADMIN
omgevingsvariabele is niet aanwezig)
Ik zou aanraden om een omgevingsvariabele te definiëren voor TNS_ADMIN
en gebruik slechts één tnsnames.ora-bestand. Controleer voor de zekerheid ook uw registerwaarden.
Als uw bestanden niet . zijn bevindt zich in %ORACLE_HOME%\network\admin
, raad ik aan om er een symbolische link voor te maken - gewoon om op de zeer . te zijn veilige kant, bijv. mklink /d %ORACLE_HOME%\network\admin c:\Oracle\common\settings\admin
Nog een opmerking, je hoeft niet te "spelen" met je tnsnames.ora-bestand. Met Process Monitor van Microsoft Sysinternals kunt u elke bestandstoegang controleren, d.w.z. het filter zou zijn Path contains tnsnames
Bijwerken
Als ik een test op mijn machine uitvoer, krijg ik de volgende volgorde:
- Omgevingsvariabele
TNS_ADMIN
- Registersleutel
HKEY_CURRENT_USER\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN
-
Registersleutel
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN
, resp.HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN
-> Alleen als
TNS_ADMIN
Omgevingsvariabele is niet ingesteld. %ORACLE_HOME%\network\admin
- Huidige map (die kan verschillen van de map waarin uw toepassing zich bevindt)
- Map waarin uw toepassing zich bevindt
Update 2
Het is duidelijk dat er geen fix-zoekopdracht is, dit varieert voor verschillende providers/drivers. Misschien hangt het ook af van de Oracle-versie.
Bijvoorbeeld de Oracle HTTP-server leest TNS_ADMIN
instelling van opmn.xml
config-bestand.
Een ander voorbeeld, voor ODP.NET Managed Driver (Oracle.ManagedDataAccess) bèta versie vond ik deze bestelling bij Oracle Managed en TNS Names :
- gegevensbronalias in het gedeelte 'dataSources' onder
<oracle.manageddataaccess.client>
sectie in het .NET-configuratiebestand (d.w.z.machine.config
,web.config
,user.config
). - gegevensbronalias in de
tnsnames.ora
bestand op de locatie gespecificeerd doorTNS_ADMIN
in het .NET-configuratiebestand. - gegevensbronalias in de
tnsnames.ora
bestand aanwezig in dezelfde map als de.exe
. - gegevensbronalias in de
tnsnames.ora
bestand aanwezig op%TNS_ADMIN%
(waar%TNS_ADMIN%
is een instelling voor een omgevingsvariabele). - gegevensbronalias in de
tnsnames.ora
bestand aanwezig op%ORACLE_HOME%\network\admin
(waar%ORACLE_HOME%
is een instelling voor een omgevingsvariabele).
In officiële documentatie (12c Release 4 (12.1.0.2.4)) staat:
- gegevensbronalias in de
dataSources
sectie onder<oracle.manageddataaccess.client>
sectie in het .NET-configuratiebestand (d.w.z.machine.config
,web.config
,user.config
). - gegevensbronalias in de
tnsnames.ora
bestand op de locatie gespecificeerd doorTNS_ADMIN
in het .NET-configuratiebestand. Locaties kunnen bestaan uit absolute of relatieve directorypaden. - gegevensbronalias in de
tnsnames.ora
bestand aanwezig in dezelfde map als de.exe
.
Op basis van enkele tests die ik heb gemaakt met ODP.NET Managed Driver (4.121.2.0) duurt het echter %ORACLE_HOME%\network\admin
en TNS_ADMIN
Omgevingsvariabele in acht genomen. Sloten zoals de documentatie is niet 100% correct.