Oracle – Quel fichier TNS Names est-ce que j’utilise?

Parfois, je rencontre des problèmes de connexion Oracle, car je n’arrive pas à comprendre quel fichier tnsnames.ora mon client de firebase database utilise.

Quelle est la meilleure façon de comprendre cela? ++ heureux pour diverses solutions de plate-forme.

    Oracle fournit un utilitaire appelé tnsping :

     R:\>tnsping someconnection TNS Ping Utility for 32-bit Windows: Version 9.0.1.3.1 - Production on 27-AUG-20 08 10:38:07 Copyright (c) 1997 Oracle Corporation. All rights reserved. Used parameter files: C:\Oracle92\network\ADMIN\sqlnet.ora C:\Oracle92\network\ADMIN\tnsnames.ora TNS-03505: Failed to resolve name R:\> R:\>tnsping entpr01 TNS Ping Utility for 32-bit Windows: Version 9.0.1.3.1 - Production on 27-AUG-20 08 10:39:22 Copyright (c) 1997 Oracle Corporation. All rights reserved. Used parameter files: C:\Oracle92\network\ADMIN\sqlnet.ora C:\Oracle92\network\ADMIN\tnsnames.ora Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (COMMUNITY = **) (PROTOCOL = TCP) (Host = ****) (Port = 1521))) (CONNECT_DATA = (SID = ENTPR0 1))) OK (40 msec) R:\> 

    Cela devrait montrer quel fichier vous utilisez. L’utilitaire se trouve dans le répertoire Oracle bin .

    Pour linux:

     $ strace sqlplus -L scott/tiger@orcl 2>&1| grep -i 'open.*tnsnames.ora' 

    montre quelque chose comme ceci:

     open("/opt/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora",O_RDONLY)=7 

    Passer à

     $ strace sqlplus -L scott/tiger@orcl 2>&1| grep -i 'tnsnames.ora' 

    affichera tous les chemins de fichiers défaillants.

    Il y a un autre endroit où l’emplacement TNS est stocké: Si vous utilisez Windows, ouvrez regedit et accédez à My HKEY Local Machine/Software/ORACLE/KEY_OraClient10_home1 KEY_OraClient10_home1 My HKEY Local Machine/Software/ORACLE/KEY_OraClient10_home1KEY_OraClient10_home1 est votre home Oracle. S’il existe une entrée de chaîne appelée TNS_ADMIN , la valeur de cette entrée pointe vers le fichier TNS utilisé par Oracle sur votre ordinateur.

    Pour Windows: Filemon de SysInternals vous montrera quels fichiers sont accessibles.

    N’oubliez pas de définir vos filtres pour ne pas être submergé par le trafic du système de fichiers bavard.

    Boîte de dialogue de filtrage

    Ajout: Filemon ne fonctionne pas avec les nouvelles versions de Windows, vous devrez donc peut-être utiliser Process Monitor .

    Sur ma machine de développement, j’ai trois versions différentes du logiciel client Oracle. Je gère le fichier tnsnames.ora dans l’un d’eux. Dans les deux autres, je suis entré dans le fichier tnsnames.ora :

     ifile=path_to_tnsnames.ora_file/tnsnames.ora 

    De cette façon, si pour une raison quelconque le fichier tnsnames.ora incorrect est utilisé par un client, il se retrouvera toujours à la version mise à jour.

    Codeslave demande: “Ne devrait-il pas toujours s’agir de” $ ORACLE_ HOME / network / admin / tnsnames.ora “? La réponse est non, ce n’est pas le cas. Considérez ces deux invocations de tnsping sur la même machine:

     C:\Documents and Settings\me>D:\Oracle\10.2.0_DB\BIN\tnsping orcl TNS Ping Utility for 32-bit Windows: Version 10.2.0.4.0 - Production on 09-OCT-2 008 14:30:12 Copyright (c) 1997, 2007, Oracle. All rights reserved. Used parameter files: D:\Oracle\10.2.0_DB\network\admin\sqlnet.ora Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = xxxx )(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL))) OK (40 msec) C:\Documents and Settings\me>tnsping orcl TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 09-OCT-2 008 14:30:21 Copyright (c) 1997, 2005, Oracle. All rights reserved. Used parameter files: D:\oracle\10.2.0_Client\network\admin\sqlnet.ora Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = XXXX)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = ORCL))) OK (20 msec) C:\Documents and Settings\me> 

    Notez les deux emplacements de fichiers de parameters différents, qui dépendent de l’exécutable tnsping que vous exécutez (et peut-être d’où il provient). Pour le réseau oracle basé sur tnsnames, l’utilisation de la variable TNS_ADMIN est le seul moyen de vous assurer d’obtenir un fichier tnsnames.ora cohérent. (REMARQUE: réponse centrée sur Windows)

    Par défaut, tnsnames.ora se trouve dans le répertoire $ ORACLE_HOME / network / admin sur les systèmes d’exploitation UNIX et dans le répertoire ORACLE_HOME \ network \ admin sur les systèmes d’exploitation Windows. tnsnames.ora peut également être stocké dans les emplacements suivants:

    Le répertoire spécifié par la variable d’environnement TNS_ADMIN (ou la valeur de registre)

    Sur les systèmes d’exploitation UNIX, le répertoire de configuration global. Par exemple, sur le système d’exploitation Solaris, ce répertoire est / var / opt / oracle

    Si vous avez plusieurs ORACLE_HOMES, sachez lequel vous utilisez, l’emplacement du fichier tnsnames.ora pouvant varier d’un ORACLE_HOME à l’autre.

    Pour la personne qui a mentionné la variable d’environnement TWO_TASK, utilisée pour définir un nom de service de firebase database par défaut auquel se connecter (qui peut être une firebase database sur un autre serveur). Le nom de service que vous définissez pour TWO_TASK est ensuite recherché dans le fichier tnsnames.ora lorsque vous vous connectez.

    Ne devrait-il pas toujours s’agir de “$ ORACLE_ HOME / network / admin / tnsnames.ora”? Ensuite, vous pouvez simplement faire “echo $ oracle_ home” ou l’équivalent * nix.

    @Pete Holberton Vous avez tout à fait raison. Ce qui me rappelle, il y a une autre clé de singe dans les travaux appelée TWO_ TASK

    Selon http://www.orafaq.com/wiki/TNS_ADMIN
    TNS_ADMIN est une variable d’environnement qui pointe vers le répertoire où se trouvent les fichiers de configuration SQL * Net (tels que sqlnet.ora et tnsnames.ora).

    strace sqlplus -L scott/tiger@orcl aide à trouver le fichier .tnsnames.ora sur /home/oracle pour trouver le fichier qu’il prend à la place du fichier $ORACLE_HOME/network/admin/tnsnames.ora . Merci pour le post.

    Le moyen le plus simple est probablement de vérifier la variable d’environnement PATH du processus qui se connecte à la firebase database. Il est fort probable que le fichier tnsnames.ora se trouve dans le premier répertoire Oracle bin du chemin .. \ network \ admin. La variable d’environnement TNS_ADMIN ou la valeur dans le registre (pour la maison Oracle actuelle) peut remplacer cela.

    Utiliser Filemon comme suggéré par d’autres fera aussi l’affaire.

    Pas de réponse directe à votre question, mais j’ai été très frustré d’essayer de trouver et de mettre à jour tous les fichiers tnsnames, car j’avais plusieurs installations Oracle: Client, outils de BI, OWB, etc. J’ai fini par créer un utilitaire appelé TNSNamesSync qui mettra à jour tous les noms de domaine dans tous les foyers Oracle. C’est sous la licence MIT, libre d’utiliser ici https://github.com/artybug/TNSNamesSync/releases

    Les documents sont ici: https://github.com/artchik/TNSNamesSync/blob/master/README.md

    Ceci est pour Windows uniquement, cependant.