Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

java.sql.SQLException:I / O Error:Thiết lập lại kết nối trong máy chủ linux

Câu trả lời lấy từ diễn đàn oracle, tại đây :

java.security.SecureRandom là một API tiêu chuẩn do sun cung cấp. Trong số các phương thức khác nhau được cung cấp bởi lớp này void nextBytes(byte[]) .

Phương pháp này được sử dụng để tạo các byte ngẫu nhiên. Trình điều khiển Oracle 11g JDBC sử dụng API này để tạo số ngẫu nhiên trong quá trình đăng nhập. Người dùng sử dụng Linux đã gặp phải SQLException("Io exception: Connection reset") .

Vấn đề là hai vấn đề:

  1. JVM cố gắng liệt kê tất cả các tệp trong / tmp (hoặc thư mục tmp thay thế được đặt bởi -Djava.io.tmpdir) khi SecureRandom.nextBytes(byte[]) Được gọi. Nếu số lượng tệp lớn, themethod sẽ mất nhiều thời gian để phản hồi và do đó khiến máy chủ hết thời gian chờ

  2. Phương thức void nextBytes(byte[]) sử dụng / dev / random trên Linux và trên một số máy thiếu phần cứng tạo số ngẫu nhiên, hoạt động sẽ chậm lại đến mức khiến toàn bộ quá trình đăng nhập phải tạm dừng. Cuối cùng thì người dùng gặp phải SQLException ("Io ngoại lệ:Đặt lại kết nối")

Người dùng nâng cấp lên 11g có thể gặp phải sự cố này nếu hệ điều hành cơ bản là Linux đang chạy trên phần cứng bị lỗi.

Nguyên nhân của việc này vẫn chưa được xác định chính xác. Đó có thể là sự cố trong phần cứng hoặc thực tế là vì lý do nào đó mà phần mềm không thể đọc từ dev/random

một giải pháp dường như thêm cài đặt này vào 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. Không thể chuyển giá trị chuỗi 1,2 làm đầu vào cho một truy vấn tiên tri

  2. (Tiếng Anh) Cách sử dụng máy ảo nhà phát triển xây dựng sẵn Oracle Database 19c

  3. Addnode Resolutionv.conf Failures

  4. gọi một proc được lưu trữ qua một dblink

  5. 11 cách tìm hàng trùng lặp có khóa chính trong Oracle