web-dev-qa-db-fra.com

TNS-12505: TNS: le programme d’écoute ne connaît pas actuellement le SID indiqué dans le descripteur de connexion

J'essaie de me connecter à Oracle 10.2.0 à partir de NetBeans, à l'aide de la chaîne de connexion suivante:

jdbc:Oracle:thin:@localhost:1521:XE

Le plus étrange est que tout a bien fonctionné, jusqu'à ce que celui-ci redémarre. J'ai commencé à avoir cette TNS-12505 des erreurs tout le temps; regardez les dernières entrées dans mon listener.log:

TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production on 14-APR-2011 13:46:48

Copyright (c) 1991, 2005, Oracle.  All rights reserved.

System parameter file is D:\oraclexe\app\Oracle\product\10.2.0\server\network\admin\listener.ora
Log messages written to D:\oraclexe\app\Oracle\product\10.2.0\server\network\log\listener.log
Trace information written to D:\oraclexe\app\Oracle\product\10.2.0\server\network\trace\listener.trc
Trace level is currently 0

Started with pid=3460
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC_FOR_XEipc)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(Host=Brodyaga-PC)(PORT=1521)))
Listener completed notification to CRS on start

TIMESTAMP * CONNECT DATA [* PROTOCOL INFO] * EVENT [* SID] * RETURN CODE
14-APR-2011 13:48:54 * (CONNECT_DATA=(SID=XE)(CID=(PROGRAM=JDBC Thin Client)(Host=__jdbc__)(USER=Brodyaga))) * (ADDRESS=(PROTOCOL=tcp)(Host=127.0.0.1)(PORT=58458)) * establish * XE * 12505
TNS-12505: TNS:listener does not currently know of SID given in connect descriptor
14-APR-2011 13:49:00 * (CONNECT_DATA=(SID=XE)(CID=(PROGRAM=JDBC Thin Client)(Host=__jdbc__)(USER=Brodyaga))) * (ADDRESS=(PROTOCOL=tcp)(Host=127.0.0.1)(PORT=58481)) * establish * XE * 12505
TNS-12505: TNS:listener does not currently know of SID given in connect descriptor
14-APR-2011 13:49:02 * (CONNECT_DATA=(SID=XE)(CID=(PROGRAM=JDBC Thin Client)(Host=__jdbc__)(USER=Brodyaga))) * (ADDRESS=(PROTOCOL=tcp)(Host=127.0.0.1)(PORT=58487)) * establish * XE * 12505
TNS-12505: TNS:listener does not currently know of SID given in connect descriptor
14-APR-2011 13:50:23 * (CONNECT_DATA=(CID=(PROGRAM=)(Host=)(USER=Brodyaga))(COMMAND=services)(ARGUMENTS=64)(SERVICE=LISTENER)(VERSION=169869568)) * services * 0

Les trois premières entrées correspondent à mes tentatives de connexion à partir de NetBeans. La quatrième, la connexion via SQL * Plus, fonctionnait parfaitement.

Voici le contenu de monlistener.ora:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (Oracle_HOME = D:\oraclexe\app\Oracle\product\10.2.0\server)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (Oracle_HOME = D:\oraclexe\app\Oracle\product\10.2.0\server)
      (PROGRAM = extproc)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
      (ADDRESS = (PROTOCOL = TCP)(Host = Brodyaga-PC)(PORT = 1521))
    )
  )

DEFAULT_SERVICE_LISTENER = (XE)

Ettnsnames.ora:

XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(Host = Brodyaga-PC)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

ORACLR_CONNECTION_DATA = 
  (DESCRIPTION = 
    (ADDRESS_LIST = 
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) 
    ) 
    (CONNECT_DATA = 
      (SID = CLRExtProc) 
      (PRESENTATION = RO) 
    ) 
  ) 

Et sortie de> services lsnrctl

C:\Users\Brodyaga>lsnrctl services

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 14-APR-2011 13:59
:45

Copyright (c) 1991, 2005, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_XE)))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
  Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:0 refused:0
         LOCAL SERVER
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:0 refused:0
         LOCAL SERVER
The command completed successfully

Les deux services Oracle sont démarrés et SQL * Plus se connecte correctement. 

Existe-t-il une solution de contournement pour cette erreur?

51
Anton

Vous devez ajouter l'entrée SID pour XE afin d'enregistrer l'instance avec le programme d'écoute. 

Après l’installation d’Oracle XE, tout semble aller bien, mais lorsque vous lancez 

C:\>sqlplus / as sysdba
SQL>shutdown immediate
SQL>startup

TNS-12505: TNS:listener does not currently know of SID given in connect descriptor

l'instance ne s'enregistrera pas avec l'auditeur. 

Alors éditez votre listener.ora comme ceci: 

SID_LIST_LISTENER =
  (SID_LIST =
     (SID_DESC =
       (SID_NAME = XE)
       (Oracle_HOME = C:\oraclexe\app\Oracle\product\10.2.0\server)
     )
     (SID_DESC =
        (SID_NAME = PLSExtProc)
        (Oracle_HOME = D:\oraclexe\app\Oracle\product\10.2.0\server)
        (PROGRAM = extproc)
     )
     (SID_DESC =
       (SID_NAME = CLRExtProc)
       (Oracle_HOME = D:\oraclexe\app\Oracle\product\10.2.0\server)
       (PROGRAM = extproc)
     )
  )

Ce problème est survenu lorsque j'ai installé Oracle XE sous Windows 7. Je n'ai pas été confronté à ce problème sous Windows XP. En général, cette entrée ne devrait pas être nécessaire car l'instance devrait s'inscrire automatiquement avec le programme d'écoute. En exécutant Oracle XE sur Linux (Fedora), il n’est pas nécessaire d’ajouter XE à la liste des partenaires. 

71
Bjarte Brandt

cela a fonctionné pour moi - j'ai fait tout ce qui précède puis changé:

jdbc.databaseurl=jdbc:Oracle:thin:@localhost:1521:xe

à:

jdbc.databaseurl=jdbc:Oracle:thin:@localhost:1521/xe
42
The Camster

Après un changement d'adresse IP dans notre machine virtuelle Oracle, le programme d'écoute n'a plus jamais fonctionné. Enfin, cette commande a résolu le problème (192.168.10.200 étant la nouvelle adresse IP)

[Oracle @ oracle admin] $ sqlplus/as sysdba

SQL * Plus: Version 11.2.0.1.0 Production le mardi 10 mai 12:57:37 2016

Copyright (c) 1982, 2009, Oracle. Tous les droits sont réservés.

Connecté à: Oracle Database 11g Édition Enterprise Edition 11.2.0.1.0 - Production 64 bits Avec les options Partitionnement, OLAP, Data Mining et Real Application Testing

SQL> alter system set local_listener = '(ADDRESS = (PROTOCOL = tcp) (hôte = 192.168.10.200) (PORT = 1521))' scope = les deux;

Système modifié.

SQL> modifier le registre système;

Système modifié.

SQL> exit

4
Jose Zorrilla

J'ai rencontré ce problème après une modification du pare-feu visant à restreindre l'accès entre notre réseau interne et le serveur de base de données signalant l'erreur située dans la zone démilitarisée. La communication fonctionnait bien jusqu'au changement, et les redémarrages du système et de la base de données étaient inutiles. Dans mon cas, les deux installations Oracle XE11gR2 sont sous Windows.

Après un jour de lutte, j'ai trouvé http://edstevensdba.wordpress.com/2011/07/30/exploring-the-local_listener-parameter/ et résolu le problème avec:

alter system set local_listener='(ADDRESS=(PROTOCOL=tcp)(Host=[my server's ip])(PORT=1521))' scope=both;
alter system register;

il se peut que cela fonctionne simplement à cause du "alter system register" suggéré par ik_zelf. J'ai eu l'IP déjà défini dans des endroits pertinents dans listener.ora et tnsnames.ora.

4
robm

Étape 1 - Vérification du statut du programme d'écoute de base de données

   lsnrctl status

Notez que l’auditeur que vous souhaitez (dans notre cas, «orcl») ne s'affiche pas.

Étape 2 - Connexion via sqlplus

   sqlplus sys/Oracle as sysdba

Sqlplus nous a donné ce message d'erreur:

   Writing audit records to Windows Event Log failed

Étape 3 - Accédez à l'observateur d'événements Windows (eventvwr.exe)

Sous «Journaux Windows», cliquez avec le bouton droit sur Application et sélectionnez «Effacer le journal». Faites la même chose pour le système.

Il peut également être judicieux de cliquer avec le bouton droit de la souris sur Application et de sélectionner Propriétés. Ensuite, sous «Taille du journal», sélectionnez l’option suivante sous «Lorsque la taille maximale du journal est atteinte»: «Écraser les événements si nécessaire». Cela devrait éviter que le journal ne soit saturé et empêcher la base de données de démarrer.

Sous Windows Vista et supérieur, vous pouvez exécuter la commande suivante pour effacer le journal des applications:

   wevtutil cl Application

Étape 4 - Connectez-vous via sqlplus

   sqlplus sys/Oracle as sysdba

Vous devriez maintenant pouvoir vous connecter sans message d'erreur.

Étape 5 - Vérification du statut du listener de la base de données

   lsnrctl status

Vous devriez maintenant voir votre auditeur en marche.

Étape 6 - Démarrer UCM

UCM devrait maintenant démarrer.

Pour une réponse plus détaillée à cette question, vous pouvez lire mon article complet blog

3
RedstoneCS

Comme mentionné en enlevant les deux points : et en les remplaçant par une barre oblique / avant que la face latérale ne fonctionne pour moi.

J'ai déjà eu ce problème auparavant. 

2
Mohit Tilva

J'avais le même problème sous Windows 7. La raison en était que j'avais été connecté à un réseau privé virtuel à l'aide de Cisco AnyConnect Secure Mobility Client.

2
kravemir

J'exécute Oracle xpress edition 11.2 sur Windows 8 et j'ai eu la même erreur en essayant de se connecter à la base de données en utilisant sqldeveloper.

J'ai modifié listener.ora conformément à la réponse de Brandt ci-dessus et j'ai même redémarré mon ordinateur, mais le problème n'a pas été résolu.

J'ai effectué les opérations suivantes: 1. Allez dans le Panneau de configuration -> Outils d'administration -> ServicesVous trouverez un service appelé "OracleServiceXE" qui ne fonctionne pas.

Je l'ai démarré et j'ai essayé de me connecter à nouveau, le problème est résolu.

2
Hassaan Hassaan

Votre base de données, qui a apparemment Oracle_SID XE, n'est pas définie dans le fichier listener.ora. Ce n'est pas un problème, car lorsque la base de données s'ouvre normalement, elle s'enregistrera elle-même dans le programme d'écoute par défaut, celui du port 1521, ce qui est correct.

  1. la base de données est-elle ouverte?
  2. quel est l'ordre de départ de listener/database?
  3. l'erreur est-elle persistante?

Si la base de données démarre avant le programme d'écoute, elle ne dispose d'aucun programme d'écoute. Cela se produira toutes les quelques minutes, donc après un certain temps, l'erreur devrait disparaître car l'enregistrement a eu lieu. Vous pouvez utiliser alter system register; pour accélérer ceci . Si la base de données est en mode restreint, les connexions utilisant un service échoueront. Vous utilisez Oracle_SID, ce n'est donc pas votre problème.

Vérifiez également les noms utilisés. Localhost at-il la même adresse que Brodyaga-PC? Dans la chaîne jdbc, vous utilisez localhost et l'écouteur écoute Brodyaga-PC. Est localhost 127.0.0.1?

1
ik_zelf

Vérifiez - LSNRCTL> stat J'ai un résultat comme - 

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1522)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for 32-bit Windows: Version 11.2.0.1.0 - Production 
Start Date                17-APR-2016 10:12:38 
Uptime                    0 days 10 hr. 6 min. 16 sec 
Trace Level               off 
Security                  ON: Local OS Authentication 
SNMP                      OFF
Listener Parameter File 
                        C:\product\11.2.0\dbhome_1\network\admin\listener.ora
Listener Log File        c:\app\admin\diag\tnslsnr\admin-PC\listener\alert\log.xml Listening
Endpoints Summary...  
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1522ipc)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(Host=127.0.0.1)(PORT=1522)))
Services Summary... Service "CLRExtProc" has 1 instance(s).   Instance
 "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "orcl" has 1 instance(s).   Instance "orcl", status READY, has 1 handler(s) for this service... 
Service "orclXDB" has 1 instance(s). 
  Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully.

D'après les détails ci-dessus - Mon numéro de port est - 1522 et je suis en mesure de créer une connexion à l'aide de "orcl" instance -so. J'ai utilisé le port en tant que 1522 et l'instance en tant que "orcl" - Maintenant, l'URL est - 

DriverManager.getConnection("jdbc:Oracle:thin:@localhost:1522:orcl", "SYS as SYSDBA","password");

Cela a fonctionné pour moi, donc veuillez vérifier LSNRCTL> stat dans la commande Invite et configurer votre URL de connexion en conséquence.
J'espère que ça aidera quelqu'un.

1
Anurag_BEHS

Démarrer OracleServiceHari où "HARI" est le SID a fonctionné pour moi.

D'autres personnes confrontées au même problème peuvent vérifier l'état du service.

1
Hari Chaudhary

Juste pour une autre possibilité de vérification, j’ai eu exactement le même problème avec un numéro de port incorrect spécifié dans l’URL de connexion. J'ai créé une nouvelle instance Oracle11g et oublié de supprimer l'ancienne qui occupait le même port 1521; la nouvelle instance a donc démarré automatiquement sur le port 1522. La modification du numéro de port a résolu mon problème.

0
oodograss

sous Windows dans l'option de recherche Allez dans les outils d'administration> services de composant> OracleServiceXE (démarrer ce service)

0
navis1692

Accédez au gestionnaire de tâches et aux services Vérifier ci-dessous sont en cours d'exécution ou non, sinon démarrez-les.

OracleXETNSListener OracleXEClrAgent OracleServiceXE

0
user9813237

Je viens de faire face au même problème juste après avoir installé Oracle XE 11.2. Après avoir lu et consulté un ami DBA, j'ai exécuté la commande suivante:

C:\>tnsping xe

TNS Ping Utility for 64-bit Windows: Version 11.2.0.2.0 - Production on 11-ENE-2017 14:27:44

Copyright (c) 1997, 2014, Oracle.  All rights reserved.

Used parameter files:
C:\oraclexe\app\Oracle\product\11.2.0\server\network\admin\sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(Host = myLaptop)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))

OK (30 msec)

C:\>

Comme vous pouvez le constater, sa résolution prend du temps. J'ai donc ajouté une entrée au fichier hosts de la manière suivante:

127.0.0.1       localhost

Une fois cela fait, exécutez à nouveau la même commande:

C:\>tnsping xe

TNS Ping Utility for 64-bit Windows: Version 11.2.0.2.0 - Production on 11-ENE-2
017 14:40:29

Copyright (c) 1997, 2014, Oracle.  All rights reserved.

Used parameter files:
C:\oraclexe\app\Oracle\product\11.2.0\server\network\admin\sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(Host = myLaptop)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SER
VICE_NAME = XE)))
OK (30 msec)

C:\>

Comme la réponse temporelle diminue radicalement, j'ai essayé ma connexion sur sqldeveloper.

 connection succed

0
Maucho Arellano

Dans mon cas, je viens de suivre les étapes suivantes dans Windows 10. 

  1. panneau de configuration
  2. cliquez administratif
  3. services de clic
  4. trouver OracelServeceXE, OracleXEClrAgeng, OracleXETNSListener
  5. Faites un clic droit et appuyez sur Démarrer/Redémarrer 
  6. Après avoir terminé le processus. Vérifiez que cela fonctionnera ou cela fonctionnera;) 
  7. Terminé
  8. Bonne chance.
0
Kshresthasan