Oracle
 sql >> Base de données >  >> RDS >> Oracle

Détermination de l'emplacement du fichier tnsnames.ora pertinent

Selon Oracle, ces emplacements sont recherchés pour tnsnames.ora , rép. sqlnet.ora et ldap.ora :

  1. Fichiers Oracle Net dans le répertoire de travail actuel (PWD/CWD)
  2. TNS_ADMIN défini par session ou par script défini par l'utilisateur
  3. TNS_ADMIN défini comme une variable d'environnement globale
  4. TNS_ADMIN défini dans le registre
  5. 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

  1. TNS_ADMIN défini par la variable d'environnement
  2. TNS_ADMIN défini dans la base de registre (si TNS_ADMIN la variable d'environnement n'est pas présente)
  3. %ORACLE_HOME%/network/admin répertoire (si TNS_ADMIN la 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 :

  1. Variable d'environnement TNS_ADMIN
  2. Clé de registre HKEY_CURRENT_USER\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN
  3. 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_ADMIN La variable d'environnement n'est pas définie.

  4. %ORACLE_HOME%\network\admin
  5. Répertoire actuel (qui peut être différent du répertoire où se trouve votre application)
  6. 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 :

  1. alias de source de données dans la section "dataSources" sous <oracle.manageddataaccess.client> section dans le fichier de configuration .NET (c'est-à-dire machine.config , web.config , user.config ).
  2. alias de source de données dans tnsnames.ora fichier à l'emplacement spécifié par TNS_ADMIN dans le fichier de configuration .NET.
  3. alias de source de données dans tnsnames.ora fichier présent dans le même répertoire que le .exe .
  4. alias de source de données dans tnsnames.ora fichier présent à %TNS_ADMIN%
    (où %TNS_ADMIN% est un paramètre de variable d'environnement).
  5. alias de source de données dans tnsnames.ora fichier 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 :

  1. alias de source de données dans dataSources section sous <oracle.manageddataaccess.client> section dans le fichier de configuration .NET (c'est-à-dire machine.config , web.config , user.config ).
  2. alias de source de données dans tnsnames.ora fichier à l'emplacement spécifié par TNS_ADMIN dans le fichier de configuration .NET. Les emplacements peuvent être constitués de chemins de répertoire absolus ou relatifs.
  3. alias de source de données dans tnsnames.ora fichier 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 %.