Nous avons une application exécutée localement où nous rencontrons l'erreur suivante:
ORA-12514: TNS: l'écouteur ne connaît pas actuellement le service demandé dans le descripteur de connexion
J'ai testé la connexion en utilisant TNSPing
ce qui s'est résolu correctement et j'ai essayé de me SQLPlus
connecter, ce qui a échoué avec la même erreur que ci-dessus. J'ai utilisé cette syntaxe pour SQLPlus
:
sqlplus username/password@addressname[or host name]
Nous avons vérifié que:
- l'écouteur TNS sur le serveur est en cours d'exécution.
- Oracle lui-même sur le serveur est en cours d'exécution.
Nous ne connaissons aucun changement apporté à cet environnement. Autre chose que nous pouvons tester?
Réponses:
J'ai eu ce problème et le correctif consistait à s'assurer dans
tnsnames.ora
leSERVICE_NAME
nom de service valide dans votre base de données. Pour trouver des noms de service valides, vous pouvez utiliser la requête suivante dans Oracle:Une fois que j'ai mis
tnsnames.ora
à jour :alors j'ai couru:
Succès! L'auditeur vous dit essentiellement que le nom de service que vous utilisez n'est pas un service valide selon la base de données.
(* J'exécutais sqlplus à partir de la station de travail client Win7 vers une base de données distante et blâmais les administrateurs de base de données;) *)
la source
Je sais que c'est une vieille question, mais toujours sans réponse. Cela m'a pris une journée de recherche, mais j'ai trouvé la solution la plus simple, au moins dans mon cas (Oracle 11.2 sur Windows 2008 R2) et j'ai voulu partager.
L'erreur, si elle est examinée directement, indique que l'auditeur ne reconnaît pas le nom du service. Mais où conserve-t-il les noms de service? Dans
%ORACLE_HOME%\NETWORK\ADMIN\listener.ora
Le "SID_LIST" est juste cela, une liste de SID et de noms de service appariés dans un format que vous pouvez copier ou rechercher.
J'ai ajouté le nom du service problématique, puis dans le panneau de configuration "Services" de Windows, j'ai fait un "redémarrage" sur le service d'écoute Oracle. Maintenant tout va bien.
Par exemple, votre fichier listener.ora pourrait initialement ressembler à:
... Et pour lui faire reconnaître un nom de service
orcl
, vous pouvez le changer en:la source
listener.ora
les noms sont stockés. Je n'ai même pas delistener.ora
dossier. Je suis également sur un poste de travail client exécutant SQL Developer et essayant de créer simplement un lien de base de données lorsque j'obtiens l'erreur. Je n'ai pas de service d'écoute Oracle pour redémarrer.J'ai eu ce problème sur Windows Server 2008 R2 et Oracle 11g
Si vous ne disposez d'aucune entrée pour les services de base de données, créez-en une et définissez la base de données globale correcte
sid
et l'oracle home.la source
Dans mes circonstances, l'erreur était due au fait que l'auditeur n'avait pas enregistré le service de la base de données. J'ai résolu cela en enregistrant les services. Exemple:
Mon descripteur en
tnsnames.ora
:Donc, je procède à l'enregistrement du service
listener.ora
manuellement:Enfin, redémarrez l'écouteur par commande:
Terminé!
la source
Le démarrage d'OracleServiceXXX à partir de services.msc a fonctionné pour moi dans Windows.
la source
Cela devrait vraiment être un commentaire à la réponse de Brad Rippe , mais hélas, pas assez de représentants. Cette réponse m'a permis d'atteindre 90% du chemin. Dans mon cas, l'installation et la configuration des bases de données ont mis des entrées dans le fichier tnsnames.ora pour les bases de données que j'exécutais. Tout d'abord, j'ai pu me connecter à la base de données en définissant les variables d'environnement (Windows):
puis se connecter en utilisant
Ensuite, exécutez la commande à partir de la réponse de Brad Rippe:
a montré que les noms ne correspondaient pas exactement. Les entrées telles que créées à l'aide de l'assistant de configuration de base de données d'Oracle, à l'origine:
Le nom du service de la requête était juste
mydatabase
plutôt quemydatabase.mydomain.com
. J'ai édité le fichier tnsnames.ora avec juste le nom de base sans la partie domaine, donc ils ressemblaient à ceci:J'ai redémarré le service TNS Listener (j'utilise souvent
lsnrctl stop
et àlsnrctl start
partir d'une fenêtre de commande administrateur [ou Windows Powershell] au lieu du panneau de configuration Services, mais les deux fonctionnent.) Après cela, j'ai pu me connecter.la source
J'ai eu le même problème. Pour moi, juste écrire
a fait l'affaire, le faisant se connecte au nom de service par défaut, je suppose.
la source
jdbc:oracle:thin:@//localhost:1521/orcl
. La chaîne de connexion corrigée pour éliminer cette erreur était:jdbc:oracle:thin:@localhost:1521
.ce qui a fonctionné pour moi était vraiment simple, j'avais juste besoin d'initier le service manuellement dans les "Services Windows" (services.msc dans cmd trompt). mon nom de service est: OracleServiceXXXXX.
la source
Vérifiez que la base de données est active. Connectez-vous au serveur, définissez la variable d'environnement ORACLE_SID sur votre SID de base de données et exécutez SQL * Plus en tant que connexion locale.
la source
Cette erreur peut se produire lorsqu'une application établit une nouvelle connexion pour chaque interaction de base de données ou que les connexions ne sont pas fermées correctement. L'un des outils gratuits pour surveiller et confirmer cela est le développeur Oracle Sql (bien que ce ne soit pas le seul outil que vous pouvez utiliser pour surveiller les sessions de base de données).
vous pouvez télécharger l'outil depuis le site oracle Sql Developer
voici une capture d'écran de la façon de surveiller vos sessions. (Si vous voyez de nombreuses sessions s'accumuler pour votre utilisateur d'application lorsque vous voyez l'erreur ORA-12514, c'est une bonne indication que vous pouvez avoir un problème de pool de connexions).
la source
J'ai résolu ce problème dans mon environnement Linux en mettant à jour l'IP de ma machine dans le fichier / etc / hosts.
Vous pouvez vérifier votre IP réseau (inet end.) Avec:
Vérifiez si votre IP correspond au fichier / etc / hosts:
Modifiez votre fichier / etc / hosts, s'il est intégré:
Au revoir.
la source
Pour ceux qui peuvent exécuter Oracle dans une machine virtuelle (comme moi), j'ai vu ce problème parce que ma machine virtuelle manquait de mémoire, ce qui semble avoir empêché OracleDB de démarrer / fonctionner correctement. L'augmentation de la mémoire de ma machine virtuelle et le redémarrage ont résolu le problème.
la source
Beaucoup de réponses ici, mais voici un exemple de travail avec du code que vous pouvez copier-coller et tester immédiatement:
Pour moi, l'erreur 12514 a été résolue après avoir spécifié le SERVICE_NAME correct. Vous trouvez cela sur le serveur dans le fichier
tnsnames.ora
qui contient 3 noms de service prédéfinis (l'un d'eux est "XE").HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\ODP.NET\4.112.4.0\DllPath
. Sur les machines 64 bits, écrivez en plusHKLM\SOFTWARE\Wow6432Node\Oracle\...
HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\ODP.NET\4.121.2.0\DllPath
Oracle.ManagedDataAccess.dll
qui ne fait que 4 Mo et est une DLL gérée pure qui fonctionne dans des processus 32 bits et 64 bits ainsi et ne dépend d'aucune autre DLL et ne nécessite aucune entrée de registre.Si le
SERVICE_NAME=XE
problème est incorrect, vous obtenez l'erreur 12514. LeSERVICE_NAME
est facultatif. Vous pouvez également le laisser de côté.la source
J'avais également fait face au même problème et j'ai passé 3 jours à le creuser.
Cela se produit en raison de votre mauvaise entrée de service TNS.
Vérifiez d'abord si vous pouvez vous connecter à la base de données de secours à partir de la base de données principale à l'aide de sql>
sqlplus sys@orastand as sysdba
(orastand
est une base de données de secours).Si vous ne parvenez pas à vous connecter, c'est un problème avec le service. Corrigez l'entrée du nom du service dans le fichier TNS à l'extrémité principale.
Vérifiez la base de données de secours de la même manière. Effectuez également les modifications ici si nécessaire.
Assurez-vous que le
log_archive_dest_2
paramètre a le nom de service correct.la source
J'ai eu la même erreur car le SID distant spécifié était incorrect:
J'ai interrogé la base de données système:
sélectionnez * dans global_name;
et j'ai trouvé mon SID distant ("XE").
Ensuite, je pouvais me connecter sans aucun problème.
la source
Dans mon cas, la base de données a manqué d'espace disque. Ce qui l'a fait ne pas répondre. Une fois que j'ai résolu ce problème, tout a de nouveau fonctionné.
la source
Pour moi, cela a été causé par l'utilisation d'une adresse IP dynamique à l'aide de l'installation. J'ai réinstallé Oracle en utilisant une adresse IP statique et puis tout allait bien
la source
Le redémarrage de la machine virtuelle a fonctionné pour moi
la source
Mon problème a été résolu en remplaçant le "ID" dans l'URL par "nom du service" et l'hôte correct.
la source
tnslsnr
est en place mais la base de données est en panne.Pour oracle novice, il n'est pas évident que la base de données soit en panne pendant que les connexions sont acceptées.
J'ai dû démarrer la base de données manuellement comme ça
Et puis dans la console SQL
Dans mon cas, j'ai échoué au démarrage, mais j'ai reçu un autre message d'erreur et j'ai trouvé la source d'un problème - j'ai dû changer le nom d'hôte, puis le démarrage automatique de la base de données était à nouveau fonctionnel.
la source
J'ai implémenté la solution de contournement ci-dessous pour résoudre ce problème.
J'ai défini le ORACLE_HOME à l'aide de l'invite de commande (cliquez avec le bouton droit sur cmd.exe et exécutez en tant qu'administrateur système).
Utilisé ci-dessous la commande
set oracle_home="path to the oracle home"
Accédez à Tous les programmes -> Oracle -ora home1 -> Outils de migration de configuration -> Net Manager -> Listener
Sélectionnez Services de base de données dans la liste déroulante. Le nom de la base de données globale et le SID sont définis sur le même (ORCL dans mon cas). Définissez Oracle Home Directory.
Exemple de fenêtre Oracle Net Manager de la documentation Oracle:
la source
Le problème était que mon URL de chaîne de connexion contenait le nom de la base de données au lieu du SID. Remplacement du nom de la base de données par la connexion à la base de données Oracle SID a résolu ce problème.
Pour connaître les SID de votre oracle, vous pouvez parcourir le
tnsnames.ora
fichier.XE
était le SID réel, voici à quoi ressemble ma chaîne de connexion tomcat maintenant:Ma version de serveur était "Oracle 11.2 Express", mais la solution devrait également fonctionner sur d'autres versions.
la source
Dans mon cas, des crochets autour du SERVICE_NAME manquaient dans le fichier tnsnames.ora .
la source
Pour ceux qui utilisent Spring-Boot et jdbc pour la connexion. Vous devez être prudent lors de l'écriture de jdbcUrl dans application.properties
Avec SID dans la connexion à la base de données -
source.datasource.jdbcUrl = jdbc:oracle:thin:@[HOST][:PORT]:SID
Avec le nom du service dans la connexion db
globe.datasource.jdbcUrl = jdbc:oracle:thin:@//[HOST][:PORT]/SERVICE
Cela a fonctionné pour moi :)
la source