Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

java.sql.SQLException:Erro de E/S:Redefinição de conexão no servidor linux


Resposta retirada do fórum oracle, aqui :

java.security.SecureRandom é uma API padrão fornecida pela sun. Entre vários métodos oferecidos por esta classe void nextBytes(byte[]) .

Este método é usado para gerar bytes aleatórios. Os drivers JDBC do Oracle 11g usam essa API para gerar números aleatórios durante o login. Usuários que usam Linux estão encontrando SQLException("Io exception: Connection reset") .

O problema é duplo:

  1. A JVM tenta listar todos os arquivos no /tmp (ou diretório tmp alternativo definido por -Djava.io.tmpdir) quandoSecureRandom.nextBytes(byte[]) é invocado. Se o número de arquivos for grande, o método demora muito para responder e, portanto, faz com que o servidor atinja o tempo limite

  2. O método void nextBytes(byte[]) usa /dev/random no Linux e em algumas máquinas que não possuem o hardware gerador de números aleatórios, a operação diminui a ponto de interromper todo o processo de login. Por fim, o usuário encontra SQLException("Io exception:Connection reset")

Os usuários que atualizam para 11g podem encontrar esse problema se o sistema operacional subjacente for o Linux que está sendo executado em um hardware defeituoso.

A causa disso ainda não foi determinada exatamente. Pode ser um problema no hardware ou o fato de que, por algum motivo, o software não pode ler dev/random

uma solução parece adicionar essa configuração ao jvm
-Djava.security.egd=file:/dev/./urandom