sql >> Databasteknik >  >> RDS >> Oracle

java.sql.SQLException:I/O-fel:Anslutningen återställdes i linux-servern

Svaret togs från oracle forum, här :

java.security.SecureRandom är ett standard-API från sun. Bland olika metoder som erbjuds av denna klass void nextBytes(byte[]) .

Denna metod används för att generera slumpmässiga bytes. Oracle 11g JDBC-drivrutiner använder detta API för att generera slumptal under inloggning. Användare som använder Linux har stött på SQLException("Io exception: Connection reset") .

Problemet är tvåfaldigt:

  1. JVM försöker lista alla filerna i /tmp (eller alternativa tmp-katalogen inställd av -Djava.io.tmpdir) närSecureRandom.nextBytes(byte[]) åberopas. Om antalet filer är stort tar metoden lång tid att svara och får därför servern att ta en timeout

  2. Metoden void nextBytes(byte[]) använder /dev/random på Linux och på vissa maskiner som saknar den slumptalsgenererande hårdvaran saktar operationen ner till den grad att hela inloggningsprocessen stoppas. I slutändan stöter användaren på SQLException("Io exception:Connection reset")

Användare som uppgraderar till 11g kan stöta på detta problem om det underliggande operativsystemet är Linux som körs på en felaktig hårdvara.

Orsaken till detta har ännu inte fastställts exakt. Det kan antingen vara ett problem i hårdvaran eller det faktum att programvaran av någon anledning inte kan läsa från dev/random

en lösning verkar lägga till den här inställningen till jvm

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


  1. Gruppera efter klausul i mySQL och postgreSQL, varför felet i postgreSQL?

  2. Bygga en maskininlärningsmodell med SQL Server, ML.NET och C#

  3. Hur lägger man till kommentarer till en tabell i Oracle SQL Developer?

  4. Välj den senaste raden för varje grupp från oracle