web-dev-qa-db-fra.com

Erreur de réinitialisation de la connexion Oracle 11g

Voyez l'erreur ci-dessous lorsque vous essayez de vous connecter à Oracle 11g sous Red Hat Linux 64 bits à l'aide de pilotes jdbc minces. J'apprécierais beaucoup si quelqu'un peut apporter plus de lumière sur la façon de procéder pour résoudre ce problème. 

 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)
9
John C

Vous n'avez inclus aucun détail sur le problème, comme ce qui a changé? Est-ce une nouvelle configuration pour vous ou est-ce que cela a soudainement cessé de fonctionner? Savez-vous si vous avez assez de connexions disponibles? Cela se produit-il à chaque connexion ou est-ce intermittent?

Considérant que l'erreur se produit pendant le processus d'ouverture de session, voici quelques possibilités:

  1. Faute de réseau
  2. Vous avez épuisé le nombre maximal de connexions. Oracle vous raccroche.
  3. Restrictions de pare-feu
  4. Un problème avec le serveur de base de données ou l'écouteur. Le traitement desservant votre session peut se bloquer après son ouverture.

Vérifiez que le thread de stackoverflow suivant indique comment vérifier le nombre de connexions actives et le nombre maximal de connexions. Je m'attendrais à une erreur «ORA-00018: nombre maximal de sessions dépassé» si tel était le problème, ce qui peut ne pas être le cas. Mais ça vaut la peine de vérifier.

Comment vérifier le nombre maximum de connexions autorisées à une base de données Oracle?

4
Brandon

Nous avons eu quelque chose de très similaire, déplacer un programme de 32 à 64 bits et un certain nombre de processus simultanés génèrent l'erreur IO Erreur: réinitialisation de la connexion.

Je suis tombé sur ce qui l'a corrigé:

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

En gros, ajoutez le paramètre -Djava.security.egd = file:/dev /./ urandom et ça ira :)

14
DotMasta

J'ai rencontré un problème similaire avec l'importation Oracle Sqoop et j'ai implémenté le correctif suggéré par ceci link

Ce paramètre a aidé à résoudre le problème:

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

et j'ai changé le nom de la propriété de configuration mapred-site.xml comme suit:

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

Ceci est un peu spécifique à sqoop, mais je pense que la définition de l’option de la machine virtuelle Java -Djava.security.egd=file:///dev/urandom"

7
akshat thakar

Comme la pile n'indique aucune ORA, vous avez des problèmes de réseau sous-jacents.

2
Michael-O

Avait le même problème - a échoué sur Linux (parfois), a travaillé sur Windows (toujours). 

Lisez à propos de la raison (et de la solution) sur ces sites: 

0
user2474291

Ce problème était également dû au fait que les paramètresNOM_HÔTEétaient erronés. Ma tentative de connexion a été pendue à:

"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)

Assurez-vous donc d'avoir une entrée pour votre nom d'hôte dans /etc/hosts/.

Si vous émettez une commande hostname comme celle-ci:

$ hostname
my.server.com

Vous avez besoin d'une ligne dans votre /etc/hosts:

127.0.0.1 my my.server.com
0
Pablo Santa Cruz