100 votes

Les noms TNS Oracle ne s'affichent pas lors de l'ajout d'une nouvelle connexion à SQL Developer

J'essaie de me connecter à une base de données Oracle avec SQL Developer.

J'ai installé les pilotes .Net d'Oracle et placé le fichier d'échange de données. tnsnames.ora à l'adresse
C:\Oracle\product\11.1.0\client_1\Network\Admin

J'utilise le format suivant dans tnsnames.ora :

dev =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.XXX.XXX)(PORT = XXXX))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = idpdev2)
    )
  )

Dans SQL Developer, lorsque j'essaie de créer une nouvelle connexion, aucun nom de TNS ne s'affiche comme option.

Y a-t-il quelque chose que j'ai manqué ?

182voto

JasonAnderson Points 1786

SQL Developer recherchera un fichier tnsnames.ora à l'emplacement suivant, dans cet ordre

  1. $HOME/.tnsnames.ora
  2. $TNS_ADMIN/tnsnames.ora
  3. Clé de recherche TNS_ADMIN dans le registre
  4. /etc/tnsnames.ora (non-Windows)
  5. $ORACLE_HOME/network/admin/tnsnames.ora
  6. LocalMachine \SOFTWARE\ORACLE\ORACLE_HOME_KEY
  7. LocalMachine \SOFTWARE\ORACLE\ORACLE_HOME

Pour voir quel est celui utilisé par SQL Developer, lancez la commande show tns dans la feuille de travail

Si votre fichier tnsnames.ora n'est pas reconnu, utilisez la procédure suivante :

  1. Définir une variable environnementale appelée TNS_ADMIN pour pointer vers le dossier qui contient votre fichier tnsnames.ora.

    Sous Windows, cela se fait en naviguant vers Panneau de contrôle > Système > Paramètres avancés du système > Variables d'environnement...

    Sous Linux, définissez l'option TNS_ADMIN dans le fichier .profile de votre répertoire personnel.

  2. Confirmez que le système d'exploitation reconnaît cette variable environnementale

    À partir de la ligne de commande Windows : echo %TNS_ADMIN%

    Depuis linux : echo $TNS_ADMIN

  3. Redémarrer SQL Developer

  4. Maintenant, dans SQL Developer, cliquez droit sur Connexions et sélectionnez Nouvelle connexion... . Sélectionnez TNS comme type de connexion dans la liste déroulante. Vos entrées de tnsnames.ora devraient maintenant s'afficher ici.

1 votes

Pour moi : $HOME/.tnsnames.ora n'a pas fonctionné ... J'ai utilisé $HOME/tnsnames.ora à la place. Remarque : vous devrez aller dans Outils -> Préférences, rechercher "tns" et indiquer le répertoire à $HOME.

0 votes

Bien que cela figure dans les notes de publication de la version 1.5 de SQL developer, j'ai constaté que sur Ubuntu 12.04 LTS seul le n°5 a fonctionné . Essayez ces étapes pour vérifier si c'est votre cas : forums.oracle.com/message/2769285#2769285 . À noter : L'auteur a rencontré le même problème sur Win Vista.

0 votes

Cela a fonctionné pour moi sous Windows. Enregistrer les choses pour toujours FTW !

33voto

Paul Mattey Points 201

Ouvrez SQL Developer. Aller dans Outils -> Préférences -> Bases de données -> Avancé Puis définissez explicitement le répertoire Tnsnames

Mes TNSNAMES étaient correctement configurés et je pouvais me connecter à Toad, SQL*Plus etc. mais j'avais besoin de faire cela pour que SQL Developer fonctionne. Peut-être que c'était un problème lié à Win 7, car l'installation a également été pénible.

0 votes

La réponse acceptée n'a pas fonctionné pour moi mais celle-ci l'a fait (Windows Server 2008R2)

0 votes

J'ai eu le même problème, mais SQL Developer a également regardé dans %userprofile%. \tnsnames.ora avant %TNS_ADMIN%. \tnsnames.ora et c'est là que j'avais le fichier supplémentaire tnsnames.ora.

16voto

DCookie Points 22921

Vous pouvez toujours découvrir l'emplacement du fichier tnsnames.ora utilisé en exécutant TNSPING pour vérifier la connectivité (9i ou plus) :

C:\>tnsping dev

TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 08-JAN-2009 12:48:38

Copyright (c) 1997, 2005, Oracle.  All rights reserved.

Used parameter files:
C:\oracle\product\10.2.0\client_1\NETWORK\ADMIN\sqlnet.ora

Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = XXX)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = DEV)))
OK (30 msec)

C:\>

Parfois, le problème vient de l'entrée que vous avez faite dans tnsnames.ora, et non du fait que le système ne peut pas le trouver. Cela dit, je suis d'accord pour dire qu'avoir une variable d'environnement tns_admin est une bonne chose, car cela permet d'éviter les inévitables problèmes qui surviennent lorsqu'il s'agit de déterminer exactement quel fichier tnsnames est utilisé dans des systèmes avec plusieurs foyers oracle.

0 votes

Comment installer l'outil tnsping ?

0 votes

Dans l'installation du client, il y a une case à cocher pour les outils de base de données ou quelque chose du genre.

16voto

Chandra Sekhar Points 5388

En Développeur SQL consultez le site Tools --> Preferences comme le montre l'image ci-dessous.

enter image description here

Dans le Préférences options expand Database --> select Advanced --> under "Tnsnames Directory" --> Browse the directory donde tnsnames.ora présent.
Cliquez ensuite sur Ok .
comme indiqué dans le schéma ci-dessous.

enter image description here

Vous avez fait !

Vous pouvez maintenant vous connecter via le Noms des TNS options.

1 votes

Je ne trouve pas "Databse:Advanced" ==>ma version est 1.5.5

1 votes

Pour les versions inférieures à 2.1 ou si vous n'avez pas spécifié de répertoire Tnsnames sur 2.1 ou plus, veuillez suivre la procédure spécifiée dans Réponse de @JasonAnderson .

0 votes

Je n'ai pas l'option Tnsnames Directory dans le menu Tools->Preferences->Databaes->Advanced Parameters. J'utilise SqlDeveloper v1.1.3.

2voto

Allan Stewart Points 1

Les étapes mentionnées par Jason sont très bonnes et devraient fonctionner. Il y a cependant une petite particularité de SQL Developer. Il met en cache les spécifications de connexion (hôte, nom de service, port) la première fois qu'il lit le fichier tnsnames.ora. Ensuite, il n'invalide pas les spécifications lorsque l'entrée originale est supprimée du fichier tnsname.ora. Le cache persiste même après la fermeture et le redémarrage de SQL Developer. Ce n'est pas une façon si illogique de gérer la situation. Même si un fichier tnsnames.ora est temporairement indisponible, SQL Developer peut toujours établir la connexion tant que les spécifications originales sont toujours vraies. Le problème vient de la prochaine petite astuce. SQL Developer traite les noms de service dans le fichier tnsnames.ora comme des valeurs sensibles à la casse lors de la résolution de la connexion. Ainsi, si vous aviez une entrée nommée ABCD.world dans le fichier et que vous la remplaciez par une nouvelle entrée nommée abcd.world, SQL Developer ne mettra PAS à jour ses spécifications de connexion pour ABCD.world - il traitera abcd.world comme une connexion différente. Pourquoi ne suis-je pas surpris qu'un produit Oracle traite comme sensible à la casse le contenu d'un format de fichier développé par Oracle qui est expressément insensible à la casse ?

0 votes

@allen : savez-vous comment le forcer à effacer cette liste ? Si oui, veuillez répondre à stackoverflow.com/q/6412559/168646

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X