sql >> Databáze >  >> RDS >> Oracle

java.sql.SQLException:I/O Error:Resetování připojení na linuxovém serveru

Odpověď převzata z fóra Oracle zde :

java.security.SecureRandom je standardní API poskytované společností sun. Mezi různými metodami nabízenými touto třídou void nextBytes(byte[]) .

Tato metoda se používá pro generování náhodných bajtů. Ovladače Oracle 11g JDBC používají toto API ke generování náhodných čísel během přihlašování. Uživatelé používající Linux se setkávají s SQLException("Io exception: Connection reset") .

Problém je dvojí:

  1. JVM se pokusí vypsat všechny soubory v /tmp (nebo alternativním adresáři tmp nastaveném parametrem -Djava.io.tmpdir), kdyžSecureRandom.nextBytes(byte[]) je vyvoláno. Pokud je počet souborů velký, metoda trvá dlouho, než odpovídá, a proto způsobí časový limit serveru

  2. Metoda void nextBytes(byte[]) používá /dev/random na Linuxu a na některých počítačích, které nemají hardware generující náhodná čísla, operace se zpomalí do té míry, že se zastaví celý proces přihlašování. Nakonec uživatel narazí na SQLException("Io výjimka:Reset připojení")

Uživatelé upgradující na 11g mohou narazit na tento problém, pokud je základním OS Linux, který běží na vadném hardwaru.

Příčina toho nebyla dosud přesně stanovena. Může to být buď problém v hardwaru, nebo skutečnost, že software z nějakého důvodu nemůže číst z dev/random

řešení Zdá se, že toto nastavení přidává do jvm

-Djava.security.egd=file:/dev/./urandom


  1. postgresql seznam a pořadí tabulek podle velikosti

  2. Jak vytvořit pohled MySQL

  3. Klauzule SQL OVER() – kdy a proč je užitečná?

  4. PL/SQL - Použijte proměnnou seznamu v klauzuli Where In