Je dois utiliser PLSQL Developer pour accéder aux bases de données Oracle. Le message d'erreur suivant s'affiche lorsque j'essaie de me connecter à ma base de données. ORA-12154: TNS:could not resolve the connect identifier specified.
Je peux utiliser SQLPLUS à partir de la ligne de commande pour me connecter à la base de données, et tspsping revient avec succès, mais je ne comprends pas pourquoi le développeur PLSQL ne fonctionnera pas - il utilise le bon tnsnames.ora fichier, et la chaîne de connexion est correcte car c’est le même qui tspsping les usages.
Quelqu'un a une idée de ce que je peux faire pour résoudre ce problème? J'ai examiné d'autres discussions sur cette erreur spécifique sans succès.
tnsnames.ora
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(Host = MININT-AIVKVBM)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
sqlnet.ora
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
ligne de commande sqlpusimage ici
Préférences de connexion de développeur PLSQL: image ici
La réponse était simplement de déplacer le dossier PLSQL Developer de "Program Files (x86) dans le dossier" Program Files "- bizarre!
Cette erreur est très commune, souvent la première fois que vous essayez d’établir une connexion avec votre base de données. Je suggère ces 6 étapes pour corriger ORA-12154:
Pour plus d'informations: http://turfybot.free.fr/Oracle/11g/errors/ORA-12154.html
Comme je ne peux pas ajouter de commentaire, je me suis dit que ce serait à poster. La réponse de tufy est correcte, il s'agit de parenthèses (crochets) dans le chemin d'accès à l'application en cours d'exécution.
Il existe un bogue réseau dans lequel la couche réseau est Incapable d'analyser les emplacements de programme contenant des parenthèses dans le chemin De l'exécutable qui tente de se connecter à Oracle.
Classé avec Oracle, le bogue 3807408 fait référence.
copier coller pl développeur SQL dans les fichiers de programme x86 et les fichiers de programme à la fois. si le client est installé dans une autre partition/lecteur, copiez également pl SQL Developer sur ce lecteur également. et exécutez à partir du dossier de développement pl sql au lieu du raccourci sur le bureau.
solution ultime! refroidissement
Pour moi, le formatage de l'identifiant de connexion tnsnames.ora était incorrect. L'indentation de la chaîne d'identifiant est requise, comme indiqué dans l'exemple tnsnames.ora du commentaire.
Il suffit de copier et coller les fichiers tnsnames et sqlnet de la maison Oracle dans le dossier principal de PLSQL Developer. Utilisez la requête ci-dessous pour obtenir la maison Oracle.
sélectionnez substr (file_spec, 1, instr (file_spec, '\', -1, 2) -1) Oracle_HOME à partir de dba_libraries où nom_bibliothèque = 'DBMS_SUMADV_LIB';
J'ai eu le même problème avec un VM exécutant CentOS7 et Oracle 11GR2 accessible depuis Windows 7, la solution était bizarre. Sur ma machine locale, les noms de réseau pointant vers la base de données avaient un espace avant le nom du service, je viens de les supprimer. l'espace et ensuite j'ai pu me connecter.
Un exemple rapide.
Mauvais noms.
[ceci est un espace vide] XE = (DESCRIPTION = (ADRESSE = (PROTOCOL = TCP) (hôte = 127.0.0.1) (PORT = 1521)) (CONNECT_DATA = (SERVEUR = DÉDIÉ) (SERVICE_NAME = XE) ) )
EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)) (KEY = EXTPROC_FOR_XE)) ) ) (. CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) )
Les bons noms.
XE = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (hôte = 127.0.0.1) (PORT = 1521)) (CONNECT_DATA = ( SERVEUR = DÉDIÉ) (SERVICE_NAME = XE) ) )
EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)) (KEY = EXTPROC_FOR_XE)) ) ) (. CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) )
En plus des solutions ci-dessus, Vérifie également l’emplacement où se trouve le fichier tnsname ou un fichier et le compare au chemin dans la variable d’environnement.
J'ai eu un problème au travail. Le serveur Oracle a été "corrigé" et l'une des bases de données que j'utilise n'a pas pu être connectée via l'entrée TNSNames mais via une connexion de base. La base de données était opérationnelle et l'administrateur pouvait voir qu'elle était opérationnelle.
De plus, toute application utilisant TNS pour se connecter à la base de données ne fonctionnerait pas non plus.
Le problème constaté était que le nom de la base de données n'était pas correct dans le fichier TNS mais, pour une raison quelconque, cela fonctionne depuis des années. Corriger le nom nous l'a corrigé. J'ai constaté qu'Oracle SQL Developer continuait à utiliser l'ancienne entrée TNS même après l'avoir mise à jour et je n'ai pas envie de la réinstaller pour une seule connexion à la base de données. Il semble que lors de la création de la base de données, un nom plus petit que les autres lui a été attribué et que, par une action de copier/coller dans le fichier TNSNames, les données ont été mélangées. Personne ne sait vraiment comment cela fonctionne car nous enquêtons, mais le correctif Oracle garantissait que le nom devait être correct.
Un exemple de nom était le nom "DBName.Part1.Part2" mais en réalité, le nom de la base de données était "DBName"
Ou deuxième solution
vous pouvez essayer de vous connecter en utilisant Direct et non TNS en fournissant l’hôte et le port dans l’écran de connexion de Toad
Je voulais juste ajouter - apparemment, cela peut aussi être causé par l’installation d’Instant Client pour 10, puis en réalisant que vous souhaitez installer l’installation complète et en l’installant à nouveau dans un répertoire parallèle. Je ne sais pas pourquoi cela l'a cassé.