2009-01-08 19 views
85

J'essaie de me connecter à une base de données Oracle avec SQL Developer.Les noms TNS Oracle ne s'affichent pas lors de l'ajout d'une nouvelle connexion à SQL Developer

J'ai installé les pilotes Oracle Net et placé le fichier tnsnames.ora à
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 de TNS n'apparaît comme options.

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

Répondre

160

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

  1. $ HOME/.tnsnames.ora
  2. $ TNS_ADMIN/tnsnames.ora
  3. TNS_ADMIN clé de recherche dans le registre
  4. /etc/tnsnames.ora (non-fenêtres)
  5. $ ORACLE_HOME/network/admin/tnsnames.ora
  6. LocalMachine \ SOFTWARE \ ORACLE \ OU ACLE_HOME_KEY
  7. LocalMachine \ SOFTWARE \ ORACLE \ ORACLE_HOME

Pour voir lequel SQL Developer utilise, numéro Si votre fichier tnsnames.ora ne reçoit pas reconnu la commande show tns dans la feuille de calcul

, utilisez la procédure suivante:

  1. Définir une variable d'environnement appelée TNS_ADMIN pour pointer vers le dossier contenant votre tnsnames.ora f ile.

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

    Dans Linux, définissez la TNS_ADMIN variable dans la Fichier .profile dans votre répertoire personnel.

  2. Confirmer l'OS reconnaît cette variable environnementale

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

    De linux: écho TNS_ADMIN $

  3. Redémarrez SQL Developer

  4. Maintenant dans SQL Developer, cliquez avec le bouton 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.
+0

Parfait, merci! – Americus

+0

J'ai presque posé la même question. Merci. –

+11

Définir une variable d'environnement appelée TNS_ADMIN qui pointe vers le FOLDER qui contient votre fichier tnsnames.ora – detroitpro

12

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

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 est avec l'entrée que vous avez fait dans tnsnames.ora, pas que le système ne peut pas le trouver. Cela dit, je suis d'accord qu'ayant un ensemble de variables d'environnement tns_admin est une bonne chose, car il évite les problèmes inévitables qui se posent avec la détermination exacte du fichier tnsnames utilisé dans les systèmes avec plusieurs maisons Oracle.

+0

comment puis-je installer l'outil tnsping ?? – Kiquenet

+0

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

2

Les étapes mentionnées par Jason sont très bonnes et devraient fonctionner. Il y a une petite torsion avec SQL Developer, cependant. 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 d'origine est supprimée du fichier tnsname.ora. Le cache persiste même après la fin et le redémarrage de SQL Developer. Ce n'est pas une manière 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 torsion. 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 mettrait PAS à jour ses spécifications de connexion pour ABCD.world - il traitera abcd.world différemment connexion tout à fait. 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 insensible à la casse?

+0

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

29

Développeur SQL ouvert. Allez dans Outils -> Préférences -> Bases de données -> Avancé puis définir explicitement le TNSNAMES Répertoire

Mon TNSNAMES a été mis en place correctement et je pouvais connecter à Toad, SQL * Plus, etc., mais je devais faire cela pour obtenir Développeur SQL pour travailler. Peut-être que c'était un problème de Win 7 car c'était une peine à installer aussi.

+0

Rapide et simple. Merci – stoj

+0

Ceci est la solution la plus simple et cela fonctionne – bobfet1

+0

La réponse acceptée n'a pas fonctionné pour moi mais cela a fait (Windows Server 2008R2) –

1

Dans Sql Developer, navidate à Outils-> Préférences-> Datababae-> Avancé-> Set répertoire TNSNAME dans le répertoire contenant tnsnames.ora

11

Dans sqldeveloper navigation Tools --> Preferences, comme le montre l'image ci-dessous.

enter image description here

Dans les Préférences Options expand Database --> select Advanced --> under "Tnsnames Directory" --> Browse the directorytnsnames.ora présente.
Puis cliquez sur Ok.
comme indiqué dans le diagramme ci-dessous.

enter image description here

Vous avez fait!

Maintenant, vous pouvez vous connecter via les TNSNAMES options.

+0

Impossible de trouver "Databse: Advanced" ==> ma version est 1.5.5 –

+1

Pour les versions inférieures à 2.1 ou si vous n'avez pas spécifié un répertoire Tnsnames sur 2.1 ou supérieur, veuillez procéder comme indiqué dans [@JasonAnderson answer] (http://stackoverflow.com/a/425104/1213738). –

+0

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

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 n'a pas pu savoir où était tnsnames.ora. Le problème dans mon cas (Windows 7 - 64 bits - Enterprise) était que le programme d'installation 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 pointant vers une version du répertoire bin qui ne fonctionnait tout simplement pas. Je demanderais un mot de passe chaque fois que je commencerais SQL Developer, je ne me souviendrais pas des choix que j'avais faits et j'aurais affiché une liste vide quand j'ai choisi TNS comme mécanisme de connexion. Il n'a pas non plus le champ Répertoire TNS dans les paramètres avancés de la base de données référencés dans d'autres publications.

J'ai lancé l'ancien raccourci de démarrage et installé un raccourci vers% ORACLE_HOME% \ client_1 \ sqldeveloper \ sqldeveloper.exe. Ce changement a réglé le problème dans mon cas.