Maison > Article > base de données > Comment résoudre l'erreur 12505 d'Oracle
L'erreur 12505 se produit car "service_name" et sid sont incohérents. Solution : 1. Utilisez "select INSTANCE_NAME from v$instance" pour obtenir le sid actuel dans la base de données ; 2. Remplissez le sid obtenu dans la chaîne de connexion du programme de base de données.
L'environnement d'exploitation de ce tutoriel : système Windows 10, version Oracle 11g, ordinateur Dell G3.
C'est très clair lorsque l'invite 12505 apparaît. La bibliothèque d'instance correspondant au sid est introuvable, c'est-à-dire que le "nom_service" d'Oracle est incohérent avec le sid.
Étapes de la solution
1. Exécutez cette instruction :
select INSTANCE_NAME from v$instance;
Obtenez le sid de la bibliothèque d'instance
2. Utilisez ensuite le sid pour vous connecter au système
ORA-. 12505 :
Il n'y a eu aucun problème de connexion à la base de données à l'aide de PL/SQL DEVELOPER et SQLPLUS auparavant. Cependant, lorsque l'application s'est connectée à Oracle via JDBC, elle n'a pas pu se connecter correctement et l'erreur ORA-12505 ne s'est pas produite. Je connais actuellement le SID donné dans le descripteur de connexion.... ..
Après la recherche, j'ai découvert que les service_name et sid_name d'Oracle sont incohérents et que PL/SQL DEVELOPER et SQLPLUS utilisent service_name pour se connecter, tandis que l'application se connecte en fonction de sid_name, donc PL/SQL DEVELOPER et SQLPLUS peuvent se connecter mais l'application ne peut pas se connecter. problème.
Description du problème :
L'erreur suivante s'est produite lors de l'utilisation de jdbc pour se connecter à la base de données Oracle 10.2.0.1.0 aujourd'hui :
Connection refused(DESCRIPTION=(TMP=)(VSNNUM=153093120)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4))))
La base de données peut être connectée normalement via plsql, ou la base de données peut être connectée via sqlplus
Après débogage et recherche associée Les données ont révélé que la cause du problème est la suivante :
Lorsque jdbc se connecte à la base de données, vous devez utiliser le sid_name de la base de données au lieu du service_name de la base de données
Lorsque vous utilisez plsql pour vous connecter à la base de données, vous n'avez besoin que du nom_services de la base de données, donc modifiez la chaîne de connexion nom_services est nom_sid
Tutoriel recommandé : "Tutoriel vidéo Oracle"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!