Selon Oracle, ces emplacements sont recherchés pour tnsnames.ora , rép. sqlnet.ora et ldap.ora :
- Fichiers Oracle Net dans le répertoire de travail actuel (PWD/CWD)
TNS_ADMINdéfini par session ou par script défini par l'utilisateurTNS_ADMINdéfini comme une variable d'environnement globaleTNS_ADMINdéfini dans le registre- Fichiers Oracle Net dans
%ORACLE_HOME/network|net80\admin(Emplacement par défaut d'Oracle)
Cependant, je ne suis pas sûr que chaque application/pilote suive cette liste. J'ai obtenu cette liste du document Oracle 111942.1 faisant référence à Oracle 9i, elle est donc peut-être obsolète.
Dans le Guide de l'administrateur de Database Net Services, l'ordre est
TNS_ADMINdéfini par la variable d'environnementTNS_ADMINdéfini dans la base de registre (siTNS_ADMINla variable d'environnement n'est pas présente)%ORACLE_HOME%/network/adminrépertoire (siTNS_ADMINla variable d'environnement n'est pas présente)
Je recommanderais de définir une variable d'environnement pour TNS_ADMIN et utilisez un seul fichier tnsnames.ora. Afin d'être du bon côté, vérifiez également vos valeurs de registre.
Si vos fichiers ne sont pas situé dans %ORACLE_HOME%\network\admin , je recommande de créer un lien symbolique pour cela - juste pour être très côté sûr, par ex. mklink /d %ORACLE_HOME%\network\admin c:\Oracle\common\settings\admin
Une autre note, vous n'avez pas à "jouer" avec votre fichier tnsnames.ora. Avec Process Monitor de Microsoft Sysinternals, vous pouvez surveiller l'accès à chaque fichier, c'est-à-dire que le filtre serait Path contains tnsnames
Mettre à jour
Lorsque j'exécute un test sur ma machine, j'obtiens la commande suivante :
- Variable d'environnement
TNS_ADMIN - Clé de registre
HKEY_CURRENT_USER\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN -
Clé de registre
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN, rép.HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN-> Uniquement si
TNS_ADMINLa variable d'environnement n'est pas définie. %ORACLE_HOME%\network\admin- Répertoire actuel (qui peut être différent du répertoire où se trouve votre application)
- Dossier où se trouve votre application
Mise à jour 2
Évidemment, il n'y a pas de recherche de correctif, cela varie selon les fournisseurs/pilotes. Cela dépend peut-être aussi de la version d'Oracle.
Par exemple, le serveur HTTP Oracle lit TNS_ADMIN paramètre de opmn.xml fichier de configuration.
Un autre exemple, pour ODP.NET Managed Driver (Oracle.ManagedDataAccess) beta version, j'ai trouvé cette commande chez Oracle Managed et TNS Names :
- alias de source de données dans la section "dataSources" sous
<oracle.manageddataaccess.client>section dans le fichier de configuration .NET (c'est-à-diremachine.config,web.config,user.config). - alias de source de données dans
tnsnames.orafichier à l'emplacement spécifié parTNS_ADMINdans le fichier de configuration .NET. - alias de source de données dans
tnsnames.orafichier présent dans le même répertoire que le.exe. - alias de source de données dans
tnsnames.orafichier présent à%TNS_ADMIN%
(où%TNS_ADMIN%est un paramètre de variable d'environnement). - alias de source de données dans
tnsnames.orafichier présent dans%ORACLE_HOME%\network\admin
(où%ORACLE_HOME%est un paramètre de variable d'environnement).
Dans la documentation officielle (12c Release 4 (12.1.0.2.4)), il est écrit :
- alias de source de données dans
dataSourcessection sous<oracle.manageddataaccess.client>section dans le fichier de configuration .NET (c'est-à-diremachine.config,web.config,user.config). - alias de source de données dans
tnsnames.orafichier à l'emplacement spécifié parTNS_ADMINdans le fichier de configuration .NET. Les emplacements peuvent être constitués de chemins de répertoire absolus ou relatifs. - alias de source de données dans
tnsnames.orafichier présent dans le même répertoire que le.exe.
Cependant, sur la base de certains tests que j'ai effectués avec ODP.NET Managed Driver (4.121.2.0), il faut %ORACLE_HOME%\network\admin et TNS_ADMIN Variable d'environnement en compte. Les verrous comme la documentation ne sont pas corrects à 100 %.