Volgens Oracle worden deze locaties doorzocht op tnsnames.ora , resp. sqlnet.ora en ldap.ora :
- Oracle Net-bestanden in huidige werkmap (PWD/CWD)
TNS_ADMINSessie gedefinieerd of door een door de gebruiker gedefinieerd scriptTNS_ADMINgedefinieerd als een globale omgevingsvariabeleTNS_ADMINgedefinieerd 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_ADMINgedefinieerd door omgevingsvariabeleTNS_ADMINgedefinieerd in het register (indienTNS_ADMINomgevingsvariabele is niet aanwezig)%ORACLE_HOME%/network/admindirectory (indienTNS_ADMINomgevingsvariabele 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_ADMINOmgevingsvariabele 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.orabestand op de locatie gespecificeerd doorTNS_ADMINin het .NET-configuratiebestand. - gegevensbronalias in de
tnsnames.orabestand aanwezig in dezelfde map als de.exe. - gegevensbronalias in de
tnsnames.orabestand aanwezig op%TNS_ADMIN%
(waar%TNS_ADMIN%is een instelling voor een omgevingsvariabele). - gegevensbronalias in de
tnsnames.orabestand 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
dataSourcessectie onder<oracle.manageddataaccess.client>sectie in het .NET-configuratiebestand (d.w.z.machine.config,web.config,user.config). - gegevensbronalias in de
tnsnames.orabestand op de locatie gespecificeerd doorTNS_ADMINin het .NET-configuratiebestand. Locaties kunnen bestaan uit absolute of relatieve directorypaden. - gegevensbronalias in de
tnsnames.orabestand 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.