2013-05-21 36 views
6

Tôi cố gắng để nghiên cứu vấn đề này trên hai lỗi sau đây kết nối với Oracle DBS:java.sql.SQLException: Io ngoại lệ: Socket đọc timed out vs Closed kết nối

  1. đóng kết nối
  2. java.sql.SQLException: Io ngoại lệ: socket đọc timed out

hiểu biết của tôi:

  1. Closed Kết nối: Đang xảy ra do có một số loại gián đoạn mạng hoặc DB đã đóng phiên do một số loại "không hoạt động"
  2. java.sql.SQLException: Io ngoại lệ: Đã hết thời gian đọc socket: Đây là trường hợp kết nối được thực hiện thành công nhưng vì một số lý do ổ cắm/dữ liệu trống và cuối cùng nó hết thời gian vì không có sẵn dữ liệu.

Có thể sao chép các lỗi ở trên trong một địa chỉ Oracle DB nội bộ không? Các bước là gì?

Tôi đánh giá cao việc bạn dành thời gian trả lời.

Cảm ơn.

Trả lời

0

Tôi vừa bắt đầu làm việc với gói java.sql. *, Nhưng đây là những gì tôi hiểu. Kết nối bị đóng là lỗi xảy ra và phiên DB đóng, nhưng không xử lý lỗi được thực hiện để kết thúc. Với java.SQException bạn có thể quản lý lỗi này (sử dụng mệnh đề ném) và in ra hoặc thực hiện các phương pháp xử lý lỗi khác.

Đây là liên kết từ Oracle về Ngoại lệ và cách xử lý chúng.

Hy vọng điều này sẽ hữu ích.

Exceptions in Java.

+0

Cảm ơn bạn đã nhập. Đối với lỗi kết nối đóng, tôi đang cố gắng tìm ra nếu có sự khác biệt giữa DB đóng kết nối và nhiễu mạng, cho dù cả hai cung cấp cùng một lỗi hoặc nếu có một sự phân biệt. Ngoài ra, cả hai tôi tin rằng cả hai đều là ngoại lệ đúng 'java.sql.SQLRecoverableException: Closed Connection' Ngoài ra những gì về Socket thời gian ra ngoại lệ, trên những nguyên nhân cụ thể cho nó như" mạng "gián đoạn là gì. – kart0624

+0

@ kart0624 Tôi không chắc chắn về điều đó. Hãy thử đăng nhập các mã lỗi để xem chúng có khác biệt hay không. Rõ ràng chúng xảy ra vì nhiều lý do khác nhau nhưng chúng có thể hoặc không thể sử dụng cùng một mã lỗi. Đây là một số thông tin về việc đăng nhập vào java nếu bạn không quen thuộc với nó. [link] (http://www.vogella.com/articles/Logging/article.html) –

1

Hiểu biết của bạn về kết nối đã đóng là đúng. lý do cho kết nối bị đóng: Các thiết bị bên ngoài như tường lửa, thiết bị mạng và trình nghe cơ sở dữ liệu từ xa có thể buộc các kết nối mạng đóng sau một khoảng thời gian không hoạt động

ReadTimeOut sẽ xảy ra ngay cả khi đang hoạt động. Nếu một truy vấn hoặc thủ tục mất nhiều thời gian, bạn sẽ nhận được thời gian đọc ngoại lệ.

  • đóng kết nối: Shutdown cơ sở dữ liệu người nghe khi cơ sở dữ liệu đang chạy
  • ReadTimedOut: Thêm ngủ trong thủ tục trong hơn 10 phút và gọi thủ tục từ ứng dụng

Replication của Socket đọc lỗi hết thời gian trong Oracle DB env:

  1. setNetworkTimeout cho SQL connection // ví dụ sake, thiết lập thời gian chờ là 120 giây
  2. Gọi một thủ tục cơ sở dữ liệu từ java và ngủ trong thủ tục cho thời gian hơn setNetworkTimeout

    dbms_lock.sleep(125); -- sleeps for 125 seconds 
    

Kể từ khi thủ tục không trả với-in 120 giây do ngủ 125 giây, java sẽ ném thời gian đọc ổ cắm ra trong kịch bản trên.

Các vấn đề liên quan