J'ai installé Oracle 11g Express Edition Release 2 dans mon système d'exploitation Windows 7 64 bits et j'ai essayé d'exécuter le programme JDBC, puis j'ai eu l'erreur suivante:
java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:412)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:531)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:221)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:503)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at com.jlcindia.jdbc.JDBCUtil.geOracleConnection(JDBCUtil.java:28)
at Lab3O.main(Lab3O.java:15)
Caused by: oracle.net.ns.NetException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:385)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1042)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:301)
... 8 more
Réponses:
J'ai résolu ce problème en corrigeant ma chaîne jdbc.
Par exemple, la chaîne jdbc correcte doit être ...
Mais la chaîne jdbs que j'utilisais est ...
(Remarque: entre
1521
etXE
devrait être a/
)Cette mauvaise chaîne jdbc me donne également une erreur ORA-12505.
la source
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: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.)
(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
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.)
la source
SP2-0734: unknown command beginning "system/ora..." - rest of line ignored.
sur les 3system/ora...
(ou SQL * Plus a lu cette ligne à partir d'un fichier que vous lui aviez demandé de lire). Les lignes de commande que j'ai données ci-dessus sont destinées à être utilisées à partir d'une fenêtre d'invite de commande / shell / Terminal. Si vous exécutez déjà SQL * Plus, remplacez-lesqlplus
parconnect
.J'ai moi aussi eu la même erreur, mais une fois essayé, les trois ont échoué. Si les trois ci-dessus échouent, essayez le statut LSNRCTL si vous trouvez le service (XE dans mon cas) manquant, essayez ceci
Maintenant, vous pouvez voir le service
Même si vous ne voyez pas, essayez celui-ci
Cela devrait probablement fonctionner ...
la source
local_listener
, l'écouteur orcl est maintenant affiché danslsnrctl
. Mille mercis!ORA-65040: operation not allowed from within a pluggable database
qu'est-ce que cela signifie? Impossible de configurer le JDBC: /alter system set local_listener = ...
travaillé pour moi.Lorsque vous obtenez cette erreur "ORA-12505, TNS: l'auditeur ne connaît pas actuellement le SID indiqué dans le descripteur de connexion"
Solution: ouvrez les services et démarrez
OracleServiceXE
, après cela, essayez de vous connecter ...la source
J'ai trouvé quelques raisons à cette exception.
1) Le nom de la base de données XE par défaut, donc l'url sera " jdbc: oracle: thin: @localhost: 1521: XE ".
2) Assurez-vous qu'OracleServiceXE, OracleXETNSListener est en cours d'exécution.il sera dans Panneau de configuration \ Tous les éléments du panneau de configuration \ Outils d'administration \ Services
la source
J'ai résolu ce problème en corrigeant mon code JDBC.
la chaîne JDBC correcte doit être ...
Mais la chaîne JDBC que j'utilisais était ...
Ainsi, l'erreur de spécifier orcl au lieu de xe a montré cette erreur car le nom SID était incorrect.
la source
conection = DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:orcl","system","ishantyagi");
fonctionné.Mon problème est résolu lorsque j'utilise le code ci-dessous:
la source
Face à une erreur similaire, aucune des solutions ci-dessus n'a aidé. Un problème est survenu dans le fichier listner.ora. Par erreur j'avais ajouté
SID
hors de laSID_LIST
voir ci-dessous (section entre les étoiles *).Correction de cette erreur comme ci-dessous:
Arrêté et la base de données
Arrêt des écouteurs OracleServiceXE et OracleXETNSListener manuellement car il ne s'est pas arrêté automatiquement en accédant à Panneau de configuration \ Tous les éléments du panneau de configuration \ Outils d'administration \ Services. Redémarré la base de données et cela a fonctionné comme un charme.
la source
Je suis d'abord venu ici avec le même problème. J'avais juste installé Oracle 12c sur Windows 8 (64 bits), mais je l'ai depuis résolu par 'TNSPING xe' sur la ligne de commande ... Si la connexion n'est pas établie ou que le nom n'est pas trouvé, essayez le nom de la base de données, dans mon cas, c'était 'orcl' ... 'TNSPING orcl' à nouveau et s'il pings avec succès, vous devez changer le SID en 'orcl' dans ce cas (ou quel que soit le nom de base de données utilisé) ...
la source
Une possibilité que je n'ai pas vue largement discutée est qu'il peut y avoir un problème pour résoudre le nom d'hôte sur la machine hôte elle-même. S'il n'y a pas d'entrée pour $ (hostname) dans / etc / hosts, l'écouteur Oracle devient confus et ne s'affichera pas.
Cela s'est avéré être mon problème, et l'ajout du nom d'hôte et de l'adresse IP dans / etc / hosts a résolu le problème.
la source
Oracle: Syntaxe du nom de service de style léger
Les noms de service de style léger sont pris en charge uniquement par le pilote JDBC Thin. La syntaxe est:
@ // nom_hôte: numéro_port / nom_service
http://docs.oracle.com/cd/B28359_01/java.111/b31224/urls.htm#BEIDHCBA
la source
Si vous disposez d'une connexion fonctionnelle dans Oracle SQL Developer, utilisez les informations du menu de connexion pour créer votre URL, comme décrit dans l'image suivante:
Dans l'exemple ci-dessus, l'URL serait:
jdbc:oracle:thin:@ORADEV.myserver.com:1521/myservice
Notez que si vous utilisez un SID, il y a un signe deux-points (":") au lieu d'une barre oblique ("/") après le nom d'hôte.
la source
Moi aussi, j'ai été confronté au même problème. J'avais installé l'édition Oracle Express 10g dans le système d'exploitation Windows XP à l'aide de VMware et cela fonctionnait bien. Comme il était très difficile de taper des requêtes SQL dans l'utilitaire SQL fourni par 10g et que j'étais habitué à travailler avec un développeur SQL, j'ai installé un développeur SQL 32 bits dans XP et j'ai essayé de me connecter à mon DB SID "XE". Mais la connexion a échoué avec l'erreur-ORA-12505 L'auditeur TNS ne connaît pas actuellement le SID indiqué dans le descripteur de connexion. J'étais en mer pour savoir comment ce problème s'est produit car il fonctionnait bien avec l'utilitaire SQL et j'avais également créé quelques mappages Informatica en utilisant le même. J'ai parcouru beaucoup de choses sur ce truc ici et appliqué les suggestions qui m'ont été proposées après avoir envoyé un ping sur le statut de "lsnrctl" sur les forums publics, mais en vain. Cependant, ce matin, j'ai essayé à nouveau de créer une nouvelle connexion, et Voila, cela a fonctionné sans problème. Je suppose qu'après avoir lu quelques articles, l'auditeur écoute parfois avant que la base de données ne se connecte ou quelque chose (pardonnez-moi pour ma référence grossière car je suis un débutant ici) mais je suggère de simplement redémarrer la machine et de vérifier à nouveau.
la source
J'ai eu le même problème, donc pour résoudre ce problème, j'ai d'abord reconfiguré mon auditeur en utilisant
netca
après cela j'ai supprimé mon ancienne base de données qui était ORCL en utilisantdbca
, puis j'ai créé la nouvelle base de données à nouveau en utilisantdbca
la source
J'ai fait face au même problème et résolu en redémarrant le service OracleServiceXE. Accédez à Services.msc, puis vérifiez que le service 'OracleServiceXE' est actif et en cours d'exécution
la source
J'ai résolu ce problème en remplaçant « SID » par « SERVICE_NAME » dans mon fichier TNSNAMES.ora.
Veuillez voir si votre base de données demande SID ou SERVICE_NAME.
À votre santé
la source
Si vous utilisez Oracle Express Edition, vous devriez avoir cette URL
J'ai eu un problème similaire avec le plugin de configuration liquibase dans pom.xml. Et j'ai changé ma configuration:
la source
Connection con = DriverManager.getConnection ("jdbc: oracle: thin: @localhost: 1521: xe", "scott", "tiger");
Erreur que j'ai:
java.sql.SQLException: l'auditeur a refusé la connexion avec l'erreur suivante: ORA-12505, TNS: l'auditeur ne connaît pas actuellement le SID indiqué dans le descripteur de connexion Le descripteur de connexion utilisé par le client était: localhost: 1521: xe
Comment je l'ai résolu:
Connection con = DriverManager.getConnection ("jdbc: oracle: thin: localhost: 1521: xe", "scott", "tiger");
(Retirer @)
Je ne sais pas pourquoi, mais ça marche maintenant ...
la source
Vérifiez en faisant tnsping et nom de l'instance sur la machine hôte. Cela vous donnera la description tns et la plupart du temps, le nom d'hôte est différent, ce qui ne correspond pas.
Je résous mon problème de la même manière
Dans la machine Unix $ tnsping (Entrée)
Cela me donne une description tns complète où j'ai trouvé que le nom d'hôte est différent .. :)
la source
Veuillez vérifier les deux
OracleServiceXE
etOracleXETNSListener
avoir le statut commencé lorsque vous naviguezstart->run->services.msc
.Pour mon cas, seul a
OracleXETNSListener
été commencé maisOracleServiceXE
n'a pas été commencé, quand j'ai commencéright clicking -> start
et vérifié la connexion, cela fonctionnait pour moila source
J'ai eu un problème similaire dans SQL Workbench.
URL:
jdbc: oracle: fin: @ 111.111.111.111: 1111: xe
ne fonctionne pas.
URL:
jdbc: oracle: fin: @ 111.111.111.111: 1111: asdb
travaux.
Cela m'aide dans ma situation concrète. J'ai peur, cela pourrait exister de nombreuses autres raisons avec des solutions différentes.
la source
Eu un problème similaire. Le problème a commencé soudainement - nous avons une URL de connexion à la base de données à charge équilibrée, mais dans les connexions jdbc, je pointais directement vers une seule base de données.
Changé pour charger l'URL de base de données équilibrée et cela a fonctionné.
la source
Dans mon cas, cela ne fonctionnait pas, j'ai finalement redémarré mon oracle et mon auditeur TNS et tout a fonctionné. A eu du mal pendant 2 jours.
la source
J'ai eu cette erreur ORA-12505, TNS: l'auditeur ne connaît actuellement pas le SID donné dans le descripteur de connexion lorsque j'ai essayé de me connecter à Oracle DB à l'aide du développeur SQL.
La chaîne JDBC utilisée était jdbc: oracle: thin: @myserver: 1521 / XE , évidemment la bonne et les deux services oracle obligatoires OracleServiceXE, OracleXETNSListener étaient opérationnels .
La façon dont j'ai résolu ce problème (sous Windows 10)
la source
Outre l'exécution des services (OracleServiceXE, OracleXETNSListener), il est possible que votre logiciel antivirus / pare-feu les bloque toujours. Assurez-vous simplement qu'ils ne sont pas bloqués.
la source
Je viens de le réparer en redémarrant / démarrant oracleService dans les services
la source
Mon oracle a cessé de fonctionner et j'obtenais cette erreur. J'ai redémarré ma machine et j'ai également essayé les solutions ci-dessus. En fin de compte, j'ai ouvert les services de composants et redémarré les services oracle et tout a commencé à fonctionner. J'espère que cela aide quelqu'un.
la source
Je créais juste le lien de base de données de manière incorrecte.
Une solution simple pour moi était de simplement remplacer "SID" par SERVICE_NAME
En changeant
à
résolu mon problème.
la source