2017-07-04 1 views
0

J'essaye de persuader Oracle XE d'accepter les connexions de JDBC. J'utilise ojdbc6.jar depuis l'installation de XE (il y a aussi les jacks ojdbc5 et ojdbc6_g). J'ai essayé avec oracle.jdbc.OracleDriver et oracle.jdbc.driver.OracleDriver, la classe de conducteur est enregistrée. J'utilise le descripteur: jdbc: oracle: thin: @localhost: 1521: XE.TimeoutException se connectant à Oracle XE 11 via JDBC

J'ai aussi essayé de finir par/XE au lieu de: XE, que j'ai vu parfois. Essayez également le nom d'hôte réel Kaveri au lieu de localhost.

Je peux me connecter avec sqlplus, la base de données est ouverte et le service principal et le service d'écoute TNS sont en cours d'exécution.

listener.ora:

SID_LIST_LISTENER = 
(SID_LIST = 
(SID_DESC = 
    (SID_NAME = PLSExtProc) 
    (ORACLE_HOME = E:\Data\OracleXE\app\oracle\product\11.2.0\server) 
    (PROGRAM = extproc) 
) 
(SID_DESC = 
    (SID_NAME = CLRExtProc) 
    (ORACLE_HOME = E:\Data\OracleXE\app\oracle\product\11.2.0\server) 
    (PROGRAM = extproc) 
) 
) 

LISTENER = 
(DESCRIPTION_LIST = 
(DESCRIPTION = 
    (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) 
    (ADDRESS = (PROTOCOL = TCP)(HOST = Kaveri)(PORT = 1521)) 
) 
) 

DEFAULT_SERVICE_LISTENER = (XE) 

tsnames.ora:

XE = 
(DESCRIPTION = 
(ADDRESS = (PROTOCOL = TCP)(HOST = Kaveri)(PORT = 1521)) 
(CONNECT_DATA = 
    (SERVER = DEDICATED) 
    (SERVICE_NAME = XE) 
) 
) 

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

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

Je reçois

java.util.concurrent.TimeoutException 
at java.util.concurrent.FutureTask.get(Unknown Source) 
at net.sourceforge.squirrel_sql.client.mainframe.action.OpenConnectionCommand.awaitConnection(OpenConnectionCommand.java:132) 
at net.sourceforge.squirrel_sql.client.mainframe.action.OpenConnectionCommand.access$100(OpenConnectionCommand.java:45) 
at net.sourceforge.squirrel_sql.client.mainframe.action.OpenConnectionCommand$2.run(OpenConnectionCommand.java:115) 
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) 
at java.util.concurrent.FutureTask.run(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 

Vous pouvez également utiliser un programme java de notre propre je reçois

java.sql.SQLRecoverableException: IO Error: Socket read timed out 
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:673) 
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:715) 
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:385) 
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:30) 
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:564) 
at java.sql.DriverManager.getConnection(Unknown Source) 
at java.sql.DriverManager.getConnection(Unknown Source) 
... 
Caused by: oracle.net.ns.NetException: Socket read timed out 
at oracle.net.ns.Packet.receive(Packet.java:350) 
at oracle.net.ns.NSProtocolStream.negotiateConnection(NSProtocolStream.java:153) 
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:263) 
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1360) 
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:486) 
... 39 more 

lsnrctl semble se bloquer après un certain temps:

> lsnrctl status 

LSNRCTL for 64-bit Windows: Version 11.2.0.2.0 - Production on 04-JUL-2017 
17:29:09 

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1))) 
TNS-12560: TNS:protocol adapter error 
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=Kaveri)(PORT=1521))) 

Ceci est un « frais de réinstallation » d'Oracle XE sous Windows 10. Pour éviter tout doute, j'éteins pare-feu aussi, sans effet (je l'espère !).

Comment déboguer une connexion à Oracle? Je vous remercie.

MISE À JOUR: Je mentais - ou Windows était - quand il énumère les TNSListener en cours d'exécution, la situation est en réalité « Le service OracleXETNSListener sur l'ordinateur local a commencé puis arrêté ... »

Répondre