2013-03-17 22 views
9

sto vedendo l'errore sotto durante il tentativo di connettersi a Oracle 11g su Red Hat Linux, a 64-bit utilizzando i driver JDBC sottili. Apprezzerei molto se qualcuno potesse gettare più luce su come risolvere il problema.Oracle errore di ripristino collegamento 11g

Caused by: java.net.SocketException: Connection reset 
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:113) 
    at java.net.SocketOutputStream.write(SocketOutputStream.java:153) 
    at oracle.net.ns.DataPacket.send(DataPacket.java:199) 
    at oracle.net.ns.NetOutputStream.flush(NetOutputStream.java:211) 
    at oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.java:227) 
    at oracle.net.ns.NetInputStream.read(NetInputStream.java:175) 
    at oracle.net.ns.NetInputStream.read(NetInputStream.java:100) 
    at oracle.net.ns.NetInputStream.read(NetInputStream.java:85) 
    at oracle.jdbc.driver.T4CSocketInputStreamWrapper.readNextPacket(T4CSocketInputStreamWrapper.java:123) 
    at oracle.jdbc.driver.T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapper.java:79) 
    at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1122) 
    at oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1099) 
    at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:288) 
    at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:191) 
    at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:366) 
    at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:752) 
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:366) 

risposta

4

Lei non includeva alcun dettaglio del problema come quello che è cambiato? Questa è una nuova configurazione per te o ha smesso improvvisamente di funzionare? Sai se hai abbastanza connessioni disponibili? Succede a ogni connessione o è intermittente?

Considerando l'errore si verifica durante il processo di accesso, alcune possibilità sono: colpa

  1. rete
  2. aver esaurito la massima # di connessioni, in modo da Oracle si blocca su di voi.
  3. restrizioni firewall
  4. Un problema con il server di database o l'ascoltatore. L'elaborazione che serve la tua sessione potrebbe andare in crash dopo la sua apertura.

Controllare il seguente thread di stackoverflow su come controllare il numero di connessioni attive e il numero max. Mi aspetterei un "ORA-00018: numero massimo di sessioni superato" errore se questo fosse il problema, in modo che non possa essere. Ma vale la pena controllare.

How to check the maximum number of allowed connections to an Oracle database?

+0

Ciò che è cambiato sono stati gli oracle ojdbc jars. È un po 'intermittente come se dovessi eseguire il lavoro batch manualmente, il più delle volte funziona, ma quando viene eseguito tramite cron scheduler, vedo l'errore sopra riportato. –

+1

Le connessioni sono raggruppate? Cercando di vedere se tutte le connessioni sono identiche. – Brandon

+0

Per quello che vale, il problema si verifica solo su Red Hat Linux, funziona bene su Windows. –

2

Poiché lo stack non indica alcun ORA, sono presenti problemi di rete sottostanti.

+0

potrebbe essere dovuta al non avere la specifica vaso ojdbc corretta piattaforma. Dove troverei il barattolo ojdbc giusto per Oracle 11g? Inoltre, quale sarebbe un modo per iniziare a risolvere il problema di rete? –

+1

No, il protocollo Net8 è sempre lo stesso. Ottiene i driver 11.2.0.3.0 dal sito Web di Oracle. –

+0

È sempre il caso in cui, se non ci sono ORA, si tratta di un problema di rete? Gli ORA possono essere omessi per qualche motivo e potrebbero non essere visti? – Navigatron

11

Abbiamo avuto qualcosa di molto simile, si è trasferito da un programma a 32 bit per 64bit OS & un certo numero di processi concorrenti avrebbe gettato l'errore IO: il ripristino della connessione.

imbattuti in questo, che è stato risolto:

https://community.oracle.com/message/3701989

Fondamentalmente aggiungere il -Djava.security.egd = file: parametro/dev /./ urandom ed è bello andare :)

+0

questo risolve il mio problema ... – matteo84

6

ho affrontato problema simile con Sqoop Oracle importazione e ho implementato la correzione suggerita da questo link

questa impostazione ha aiutato a risolvere problema:

0.123.

-Dmapred.child.java.opts="-Djava.security.egd=file:///dev/urandom"

e ho modificato il sito.configurazione XML valore del nome proprietà come:

mapreduce.admin.map.child.java.opts -Djava.security.egd=file:///dev/urandom

Questo è Sqoop un po 'particolare, ma credo che l'opzione JVM -Djava.security.egd=file:///dev/urandom" impostazione vi aiuterà a risolvere problema.

+1

questa è la risposta giusta che ha funzionato per me come un fascino; anche se ho usato questo: -Djava.security.egd = file:/dev /./ urandom –

0

Un'altra cosa che mi stava causando questo problema stava avendo le impostazioni HOSTNAME errate. Il mio tentativo di connessione è stato impiccato a:

"main" prio=10 tid=0x00007f7cc8009000 nid=0x2f3a runnable [0x00007f7cce69e000] 
    java.lang.Thread.State: RUNNABLE 
     at java.net.Inet4AddressImpl.getLocalHostName(Native Method) 
     at java.net.InetAddress.getLocalHost(InetAddress.java:1444) 
     at sun.security.provider.SeedGenerator$1.run(SeedGenerator.java:176) 
     at sun.security.provider.SeedGenerator$1.run(SeedGenerator.java:162) 
     at java.security.AccessController.doPrivileged(Native Method) 

Quindi assicuratevi di avere una voce per il nome host in /etc/hosts/.

Se si invia un comando hostname come questo:

$ hostname 
my.server.com 

Hai bisogno di un riga nel /etc/hosts:

127.0.0.1 my my.server.com 
Problemi correlati