Oracle
 sql >> Baza danych >  >> RDS >> Oracle

java.sql.SQLException:błąd we/wy:reset połączenia na serwerze linux

Odpowiedź pochodzi z forum Oracle, tutaj :

java.security.SecureRandom to standardowe API dostarczane przez sun. Wśród różnych metod oferowanych przez tę klasę void nextBytes(byte[]) .

Ta metoda służy do generowania losowych bajtów. Sterowniki Oracle 11g JDBC używają tego interfejsu API do generowania liczby losowej podczas logowania. Użytkownicy korzystający z Linuksa napotkali SQLException("Io exception: Connection reset") .

Problem jest dwojaki:

  1. JVM próbuje wyświetlić listę wszystkich plików w /tmp (lub alternatywnym katalogu tmp ustawionym przez -Djava.io.tmpdir), gdySecureRandom.nextBytes(byte[]) jest wywoływany. Jeśli liczba plików jest duża, odpowiedź metody zajmuje dużo czasu, co powoduje przekroczenie limitu czasu serwera

  2. Metoda void nextBytes(byte[]) używa /dev/random w systemie Linux i na niektórych maszynach, które nie mają sprzętu generującego liczby losowe, operacja spowalnia do tego stopnia, że ​​cały proces logowania zostaje zatrzymany. Ostatecznie użytkownik napotyka wyjątek SQLException("Wyjątek Io:Resetowanie połączenia")

Użytkownicy dokonujący aktualizacji do 11g mogą napotkać ten problem, jeśli podstawowym systemem operacyjnym jest Linux, który działa na wadliwym sprzęcie.

Przyczyna tego nie została jeszcze dokładnie ustalona. Może to być problem sprzętowy lub fakt, że z jakiegoś powodu oprogramowanie nie może czytać z dev/random

rozwiązanie wydaje się, że dodaje to ustawienie do jvm

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle nie rozróżnia wartości null i pustych ciągów?

  2. Instalowanie formularzy i raportów Oracle 11g w wersji 2

  3. Dlaczego otrzymuję wyjątek OutOfRange w funkcji GetOrdinal tego pola CLOB?

  4. Podziel wartości oddzielone przecinkami w kolumnie w wierszu za pomocą zapytania Oracle SQL

  5. Konwertuj datę ciągu ISO-8601 na typ danych znacznika czasu Oracle