Oracle tạo con trỏ cho mọi tập kết quả và phát hành nó khi đóng tập kết quả (jdbc ResultSet.close () hoặc tương tự). Mặc định 50 con trỏ mở mỗi phiên là đủ cho bất kỳ ứng dụng nào được thiết kế tốt (một khi tôi đo nó và ở chế độ sản xuất, nó không bao giờ tăng quá 20).
Bạn nên kiểm tra cách đặt Hibernate để đóng tập kết quả sau khi tìm nạp. Nói chung, tôi không thể tưởng tượng phiên sẽ làm gì nếu nó thực sự yêu cầu 1000 con trỏ mở. Tôi chưa bao giờ thấy max_open_cursors nhiều hơn 1000 bộ, vì vậy, tôi đoán, nó cũng đủ cho các ứng dụng được thiết kế xấu (nhưng ... không có giới hạn cho sự hoàn hảo trong thực tế tỉnh táo và tôi không bao giờ sử dụng Hibernate).
Mỗi con trỏ có nghĩa là một số bộ nhớ, do đó, việc tăng max_open_cursors không phải là giải pháp thay thế bằng không.