196 votes

ORA-12505, TNS:listener ne connaît pas actuellement le SID donné dans le descripteur de connexion.

J'ai installé Oracle 11g Express Edition Release 2 dans mon système d'exploitation Windows 7 64 bit et j'ai essayé d'exécuter le programme JDBC, puis j'ai obtenu 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

10voto

rajeesh Points 51

J'ai trouvé quelques raisons pour cette exception, à savoir

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 que OracleServiceXE, OracleXETNSListener est en cours d'exécution. Panneau de contrôle \All Éléments du panneau de contrôle \Administrative Outils \Services

8voto

javabeginner Points 15

J'ai résolu ce problème en corrigeant mon code JDBC.

la chaîne JDBC correcte devrait être...

conection = DriverManager.getConnection
("jdbc:oracle:thin:@localhost:1521:xe","system","ishantyagi");

Mais la chaîne JDBC que j'utilisais était ...

conection = DriverManager.getConnection
("jdbc:oracle:thin:@localhost:1521:orcl","system","ishantyagi");

Donc, l'erreur de spécifier orcl au lieu de xe a donné lieu à cette erreur car le nom du SID était erroné.

8voto

Rasheed Puttur Points 81

Mon problème est résolu lorsque j'utilise le code ci-dessous :

Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@IPAddress:1521/servicename","userName","Password");

8voto

Yellow Diamond Points 121

J'ai rencontré une erreur similaire, mais aucune des solutions ci-dessus n'a aidé. Il y avait un problème dans le fichier listner.ora. Par erreur, j'avais ajouté SID de la SID_LIST voir ci-dessous (section entre les étoiles *).

 SID_LIST_LISTENER =
      (SID_LIST =

        (SID_DESC =
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server)
          (PROGRAM = extproc)
        )
        (SID_DESC =
          (SID_NAME = CLRExtProc)
          (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server)
          (PROGRAM = extproc)
        )
        )

 *(SID_DESC =
           (SID_NAME = XE)
           (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server)
         )*
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
          (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
        )
      )

    DEFAULT_SERVICE_LISTENER = (XE)

Cette erreur a été corrigée comme ci-dessous :

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
       (SID_NAME = XE)
       (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server)
     )
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server)
      (PROGRAM = extproc)
    )
    )
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    )
  )

DEFAULT_SERVICE_LISTENER = (XE)

Stoppé et la base de données enter image description here

Arrêt des écouteurs OracleServiceXE et OracleXETNSListener manuellement car ils ne s'arrêtaient pas automatiquement en allant dans le Panneau de configuration. \All Éléments du panneau de contrôle \Administrative Outils \Services. J'ai redémarré la base de données et ça a marché comme sur des roulettes.

5voto

jeton Points 576

Oracle : Syntaxe du nom du service de style minceur

Les noms de service de style Thin ne sont pris en charge que par le pilote JDBC Thin. La syntaxe est la suivante :

@//nom_hôte:numéro_port/nom_service

http://docs.oracle.com/cd/B28359_01/java.111/b31224/urls.htm#BEIDHCBA

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X