Oracle - Ce que TNS Noms de fichier suis-je utiliser?
J'ai parfois l'Oracle des problèmes de connexion car je ne peux pas comprendre ce qui tnsnames.ora fichier dans ma base de données client.
Quelle est la meilleure façon de comprendre cela? ++heureux pour diverses solutions de plate-forme.
Vous devez vous connecter pour publier un commentaire.
Oracle fournit un utilitaire appelé
tnsping
:Devrait afficher ce fichier que vous utilisez. L'utilitaire se trouve dans l'Oracle
bin
répertoire.Pour linux:
montre quelque chose comme ceci:
Changer de
montrera tous les chemins d'accès aux fichiers qui ne sont pas.
Il y a un autre endroit où le TNS emplacement est stocké: Si vous utilisez Windows, ouvrez
regedit
et accédez àMy HKEY Local Machine/Software/ORACLE/KEY_OraClient10_home1
oùKEY_OraClient10_home1
est votre Oracle de la maison. Si il y a une entrée de chaîne appeléeTNS_ADMIN
, alors la valeur de ce point d'entrée pour les TNS fichier que Oracle est de l'utiliser sur votre ordinateur.Pour Windows: Filemon de SysInternals va vous montrer quels sont les fichiers en cours d'accès.
N'oubliez pas de régler vos filtres de sorte que vous ne sont pas débordés par le bavard système de fichiers de la circulation.
Ajouté: Filemon ne fonctionne pas avec les nouvelles versions de Windows, alors vous pourriez avoir à utiliser Le Moniteur De Processus.
Sur ma machine de développement, j'ai trois versions différentes du logiciel client Oracle. Je gère le
tnsnames.ora
fichier dans l'un d'eux. Dans les deux autres, je suis entré dans letnsnames.ora
fichier:De cette façon, si pour une raison quelconque, le mal
tnsnames.ora
fichier est utilisé par un client, il va toujours au bout du compte jusqu'à la date de la version.Codeslave demande "Ne devrait-il pas toujours être "$ORACLE_ MAISON/network/admin/tnsnames.ora"? La réponse est non, il n'est pas. Tenir compte de ces deux invocations de tnsping sur la même machine:
Remarque les deux paramètres différents emplacements des fichiers, qui sont fonction de la tnsping exécutable que vous êtes en cours d'exécution (et peut-être où il est exécuté à partir d'). Pour tnsnames à base oracle mise en réseau, à l'aide de la TNS_ADMIN variable est la seule façon de vous assurer que vous obtenez une cohérence tnsnames.ora fichier. (REMARQUE: Windows centrée sur la réponse)
Par défaut, tnsnames.ora est situé dans le répertoire $ORACLE_HOME/network/admin répertoire sur les systèmes d'exploitation UNIX et dans le ORACLE_HOME\network\admin répertoire sur les systèmes d'exploitation Windows. tnsnames.ora peuvent également être stockés aux endroits suivants:
Le répertoire spécifié par la TNS_ADMIN variable d'environnement (ou la valeur de registre)
Sur les systèmes d'exploitation UNIX, le mondial du répertoire de configuration. Par exemple, sur le Système d'Exploitation Solaris, ce répertoire est le répertoire /var/opt/oracle
Si vous avez plusieurs ORACLE_HOMES, être conscient de ce que vous utilisez, comme l'emplacement de la tnsnames.ora fichier peut varier d'un ORACLE_HOME à l'autre.
Pour la personne qui a mentionné la TWO_TASK variable d'environnement, qui est utilisé pour définir une valeur par défaut de la base de données du service de nom pour se connecter (ce qui pourrait être une base de données sur un autre serveur). Le nom du service que vous définissez TWO_TASK est alors recherché dans le tnsnames.ora fichier lorsque vous vous connectez.
Ne devrait-elle pas être toujours "$ORACLE_ MAISON/network/admin/tnsnames.ora"?
Ensuite, il vous suffit de faire "echo $oracle_ à la maison" ou les *nix équivalent.
@Pete Holberton
Vous êtes tout à fait correct. Ce qui me rappelle, il y a une autre des bâtons dans les roues appelé TWO_ TÂCHE
Selon http://www.orafaq.com/wiki/TNS_ADMIN
TNS_ADMIN est une variable d'environnement qui pointe vers le répertoire où le SQL*Net fichiers de configuration (comme sqlnet.ora et tnsnames.ora) sont situés.
strace sqlplus -L scott/tiger@orcl
aide à trouver.tnsnames.ora
fichier sur/home/oracle
pour trouver le fichier, il prend la place de$ORACLE_HOME/network/admin/tnsnames.ora
fichier. Merci pour l'affichage.La façon la plus simple est probablement de vérifier la CHEMIN variable d'environnement du processus qui est en cours de connexion à la base de données. Probablement le tnsnames.ora fichier est dans premier Oracle répertoire bin dans le path..\network\admin. TNS_ADMIN variable d'environnement ou de la valeur dans la base de registre (pour l'Oracle en cours de la maison) peut remplacer cela.
À l'aide de filemon comme suggéré par d'autres feront aussi l'affaire.
Pas de réponse directe à votre question, mais j'ai été assez frustré en essayant de trouver et de mettre à jour tous les tnsnames fichiers, comme j'ai eu plusieurs oracle installe: le Client, outils de BI, OWB, etc, dont chacune avait son propre oracle de la maison. J'ai fini par la création d'un utilitaire appelé TNSNamesSync qui met à jour tous les tnsnames dans l'ensemble de l'oracle des maisons. C'est sous la licence MIT, libre d'utiliser ici https://github.com/artybug/TNSNamesSync/releases
Les docs sont ici:
https://github.com/artchik/TNSNamesSync/blob/master/README.md
C'est pour Windows, mais.