Il y a plusieurs choses qui peuvent causer ce problème, mais avant de commencer avec JDBC, vous devez vous assurer que vous pouvez vous connecter à la base de données à l'aide de SQL * Plus. Si vous n'êtes pas familier avec SQL * Plus, c'est un outil de ligne de commande pour la connexion aux bases de données Oracle qui fait partie d'Oracle depuis longtemps et qui est inclus avec Oracle XE.
Lorsque vous vous connectez à une base de données Oracle à l'aide de JDBC, vous ne vous connectez pas directement à la base de données. Au lieu de cela, vous vous connectez à un écouteur TNS, qui vous connecte ensuite à la base de données. L'erreur ORA-12505
signifie que l'écouteur était actif et que vous pouviez vous y connecter, mais il n'a pas pu vous connecter à la base de données car il ne sait pas que cette base de données est active. Il y a deux raisons à cela:
- la base de données n'a pas été démarrée,
- la base de données ne s'est pas enregistrée auprès de l'écouteur, par exemple parce que la base de données a été démarrée avant l'écouteur. (Lorsque la base de données démarre, elle s'enregistre auprès d'un écouteur si elle est déjà en cours d'exécution. Si l'écouteur n'est pas en cours d'exécution, la base de données ne s'enregistre pas et si l'écouteur démarre, il ne cherche pas les bases de données qui pourraient inscrivez-vous avec.)
ORA-12505 signifie que l'auditeur connaît cette base de données, mais que l'auditeur n'a pas reçu de notification de la base de données indiquant que la base de données est active. (Si vous tentiez de vous connecter à la mauvaise base de données, en utilisant le mauvais SID, vous obtiendrez une erreur ORA-12154 "TNS: n'a pas pu résoudre l'identifiant de connexion spécifié".)
Quels services Oracle sont exécutés dans le composant logiciel enfichable Services? (Ouvrez-le à partir du Panneau de configuration> Outils d'administration> Services, ou simplement Démarrer> Exécuter> services.msc
.) Vous avez besoin des services OracleServiceXE et OracleXETNSListener pour être en cours d'exécution.
Si les deux services ont été démarrés, pouvez-vous vous connecter à la base de données dans SQL * Plus à l'aide de l'un des éléments suivants à une invite de commandes? (Je suppose que vous les exécutez sur la machine sur laquelle vous avez installé Oracle XE.)
système sqlplus / mot de passe système @XE
système sqlplus / mot de passe système
sqlplus / comme sysdba
(Remplacez-le system-password
par le mot de passe que vous avez défini pour les utilisateurs SYS et SYSTEM lors de l'installation d'Oracle XE.)
Le premier de ces trois se connecte via l'auditeur TNS, mais les deux seconds se connectent directement à la base de données sans passer par l'auditeur, et ne fonctionnent que si vous êtes sur la même machine que la base de données. Si le premier échoue mais que les deux autres réussissent, les connexions JDBC échoueront également. Si tel est le cas, connectez-vous à la base de données en utilisant l'un des deux autres et exécutez ALTER SYSTEM REGISTER
. Quittez ensuite SQL * Plus et réessayez le premier formulaire.
Si le troisième échoue mais que le second fonctionne, ajoutez votre compte utilisateur au groupe ora_dba. Faites cela dans Panneau de configuration> Gestion de l'ordinateur> Utilisateurs et groupes locaux.
Une fois que vous pouvez obtenir des connexions du formulaire
système sqlplus / mot de passe système @XE
pour fonctionner, vous devez pouvoir vous connecter à Oracle XE via JDBC. (Incidemment, vous ne nous avez pas montré le code JDBC que vous utilisez pour vous connecter à la base de données, mais je soupçonnerais qu'il est très probablement correct; il y aurait diverses autres erreurs si des parties de la chaîne de connexion étaient incorrectes.)