Tôi đang chạy qua một vấn đề với kết nối Oracle gộp thông qua OracleConnectionCacheImpl. Khi tôi kết nối với một nhóm kết nối trên máy chủ cơ sở dữ liệu (Oracle 10g) thông qua trình điều khiển mỏng, mọi thứ hoạt động tốt cho đến sau một thời gian không xác định, kết nối db bị ngắt (có thể do kết nối không hoạt động?) Và tôi nhận được thông báo lỗi:Cách tự động kết nối lại hồ bơi kết nối Oracle sau khi ngắt kết nối?
Kết nối đã đóng.
Làm mới trang và kiểm tra lại kết nối sẽ kết nối lại cơ sở dữ liệu, do đó, có vẻ như đó không phải là vấn đề với mạng hoặc cơ sở dữ liệu. Là một cách cho các hồ bơi kết nối Oracle để xác nhận kết nối của nó và kết nối lại nếu kết nối trong hồ bơi là chết vì lý do nào?
Tôi đang sử dụng Apache Tomcat 6.0.18, Java EE6 cập nhật 11.
(Có vẻ là một chức năng ping trong trình điều khiển mỏng Oracle. Điều đó giúp đỡ và nơi tôi có thể tìm thấy nó?)
1) Bạn có thể thêm toàn bộ stack trace cho đóng kết nối 2) Bạn đã thiết lập InactivityTimeout, TimeToLiveTimeout hoặc AbandonedConnectionTimeout với bất kỳ giá trị không phải mặc định? 3) Bạn có sử dụng ValidateConnection không? –
4) Các kết nối vật lý giữa máy chủ ứng dụng và máy chủ DB bị cắt theo cấp độ mạng, ví dụ: bởi tường lửa? –
Tôi đặt các thông số này ở đâu? Tôi mới để lập trình Oracle, vì vậy tôi không chắc chắn nơi để tìm các thông số này. Tôi có thể tìm ValidateConnection ở đâu và buộc kết nối lại? (Chỉ cần làm mới trình duyệt của tôi ngay sau khi tôi thấy lỗi sẽ khắc phục sự cố ngay lập tức. Tôi không chắc chắn đây có phải là vấn đề về tường lửa hay không.) – futureelite7