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

93

J'essaye de me connecter à une base de données oracle avec SQL Developer.

J'ai installé les pilotes oracle .Net et placé le tnsnames.orafichier à
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'essaye de créer une nouvelle connexion, aucun nom TNS n'apparaît comme option.

Y a-t-il quelque chose qui me manque?

Americus
la source

Réponses:

176

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

  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 / réseau / admin / tnsnames.ora
  6. LocalMachine \ SOFTWARE \ ORACLE \ ORACLE_HOME_KEY
  7. LocalMachine \ SOFTWARE \ ORACLE \ ORACLE_HOME

Pour voir lequel SQL Developer utilise, exécutez la commande show tnsdans la feuille de calcul

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

  1. Définissez une variable d'environnement appelée TNS_ADMIN pour pointer vers le dossier qui contient votre fichier tnsnames.ora.

    Sous Windows, cela se fait en accédant à Panneau de configuration > Système > Paramètres système avancés > Variables d'environnement ...

    Sous Linux, définissez la variable TNS_ADMIN dans le fichier .profile de votre répertoire personnel.

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

    Depuis la ligne de commande Windows: echo% TNS_ADMIN%

    Depuis Linux: echo $ TNS_ADMIN

  3. Redémarrez SQL Developer

  4. Maintenant dans SQL Developer faites un clic 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.
JaseAnderson
la source
1
Pour moi: $ HOME / .tnsnames.ora n'a pas fonctionné ... J'ai utilisé $ HOME / tnsnames.ora à la place. Remarque également: vous devrez aller dans Outils -> Préférences, rechercher "tns" et pointer le répertoire vers $ HOME
Ryan Delucchi
Bien que cela figure dans les notes de publication de la version 1.5 du développeur SQL, j'ai trouvé que sur Ubuntu 12.04 LTS, seul le n ° 5 fonctionnait . Essayez ces étapes pour vérifier si tel est votre cas: forums.oracle.com/message/2769285#2769285 . À noter : l'auteur a eu le problème sur Win Vista.
LAFK dit Réintégrer Monica
A travaillé pour moi sous Windows. Enregistrer les choses pour toujours FTW!
Isaac
La configuration de TNS_ADMIN n'a pas fonctionné pour moi. Au lieu de cela, j'ai recherché sur l'ordinateur tous les fichiers TNSNAMES et mis à jour le contenu de tous. Je ne sais pas pourquoi Windows 7 Sql Developer a persisté à utiliser un autre fichier TNSNAMES dans un ancien dossier.
Ben
1
Remarque: $TNS_ADMINle RÉPERTOIRE n'est-il pas le .orafichier réel
geneorama
30

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

Mon TNSNAMES a été configuré correctement et je pouvais me connecter à Toad, SQL * Plus, etc. mais j'avais besoin de le faire pour que SQL Developer fonctionne. C'était peut-être un problème avec Win 7, car l'installation était également difficile.

Paul Mattey
la source
La réponse acceptée n'a pas fonctionné pour moi, mais cela a fonctionné (Windows Server 2008R2)
Josh Werts
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 tnsnames.ora supplémentaire.
MBWise
15

Dans SQLDeveloper parcourez Tools --> Preferences, comme indiqué dans l'image ci-dessous.

entrez la description de l'image ici

Dans les options Préférencesexpand Database --> select Advanced --> under "Tnsnames Directory" --> Browse the directorytnsnames.ora est présent.
Cliquez ensuite sur Ok .
comme indiqué dans le diagramme ci-dessous.

entrez la description de l'image ici

Vous avez fait!

Vous pouvez maintenant vous connecter via les options TNSnames .

Chandra Sekhar
la source
Impossible de trouver "Databse: Advanced" ==> ma version est 1.5.5
Tarek El-Mallah
1
Pour les versions inférieures à 2.1 ou si vous n'avez pas spécifié de répertoire Tnsnames sur 2.1 ou supérieur, veuillez le jachère comme spécifié dans la réponse @JasonAnderson .
Chandra Sekhar
Je n'ai pas l'option Répertoire Tnsnames dans le menu Outils-> Préférences-> Databaes-> Paramètres avancés. J'utilise SqlDeveloper v1.1.3
Ahmedov
14

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

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, non pas que le système ne peut pas la trouver. Cela dit, je suis d'accord pour dire qu'avoir un ensemble de variables d'environnement tns_admin est une bonne chose, car cela évite les problèmes inévitables qui se posent pour déterminer exactement quel fichier tnsnames est utilisé dans les systèmes avec plusieurs maisons oracle.

DCookie
la source
comment puis-je installer l'outil tnsping ??
Kiquenet
Dans l'installation du client, il y a une case à cocher pour les outils de base de données ou d'autres.
DCookie
2

Les étapes mentionnées par Jason sont très bonnes et devraient fonctionner. Il y a cependant une petite torsion avec SQL Developer. Il met en cache les spécifications de connexion (hôte, nom du 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 d'origine est supprimée du fichier tnsname.ora. Le cache persiste même après l'arrêt 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 d'origine sont toujours vraies. Le problème vient avec leur prochaine petite tournure. 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. Donc, si vous aviez un nom d'entrée ABCD. world dans le fichier et que vous l'avez remplacé 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 totalement 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?

Allan Stewart
la source
@allen: savez-vous comment le forcer à effacer cette liste? Si tel est le cas, veuillez répondre à stackoverflow.com/q/6412559/168646
David Oneill
1

Dans Sql Developer, accédez à Tools-> preferences-> Datababae-> advanced-> Set Tnsname directory to the directory contenant tnsnames.ora

B Chowdhary
la source
0

Aucun des changements ci-dessus n'a fait de différence dans mon cas. Je pourrais exécuter TNS_PING dans la fenêtre de commande mais SQL Developer ne pouvait pas savoir où se trouvait tnsnames.ora.

Le problème dans mon cas (Windows 7 - 64 bits - Entreprise) était que le programme d'installation d'Oracle pointait le raccourci du menu Démarrer vers la mauvaise version de SQL Developer. Il semble y avoir trois instances SQL Developer qui accompagnent le programme d'installation. L'un se trouve dans% ORACLE_HOME% \ client_1 \ sqldeveloper \ et deux dans% ORACLE_HOME% \ client_1 \ sqldeveloper \ bin \.

Le programme d'installation a installé un raccourci du menu Démarrer qui pointait vers une version du répertoire bin qui ne fonctionnait tout simplement pas. Il demandait un mot de passe à chaque fois que je démarrais SQL Developer, ne me souvenait pas des choix que j'avais faits et affichait une liste vide lorsque je choisissais TNS comme mécanisme de connexion. Il n'a pas non plus le champ Annuaire TNS dans les paramètres avancés de la base de données référencés dans d'autres articles.

J'ai jeté l'ancien raccourci Démarrer et installé un raccourci vers% ORACLE_HOME% \ client_1 \ sqldeveloper \ sqldeveloper.exe. Ce changement a résolu le problème dans mon cas.

Michael
la source