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

ORA-01000:vượt quá con trỏ mở tối đa khi sử dụng Spring SimpleJDBCCall

Sau nhiều thử nghiệm, chúng tôi đã khắc phục sự cố này. Nó là sự kết hợp giữa cách chúng tôi sử dụng khung công tác mùa xuân và ứng dụng khách oracle và DB oracle. Chúng tôi đang tạo các SimpleJDBCCalls mới đang sử dụng các lệnh gọi siêu dữ liệu của ứng dụng khách JDBC của oracle. Các lệnh gọi này được trả về dưới dạng con trỏ chưa được đóng và làm sạch. Tôi coi đây là một lỗi trong khuôn khổ Spring JDBC trong cách nó gọi siêu dữ liệu nhưng sau đó không đóng con trỏ. Spring nên sao chép dữ liệu meta ra khỏi con trỏ và đóng nó đúng cách. Tôi không bận tâm đến việc mở vấn đề jira với spring vì nếu bạn sử dụng phương pháp hay nhất, lỗi sẽ không được hiển thị.

Điều chỉnh OPEN_CURSORS hoặc bất kỳ thông số nào khác là cách sai để khắc phục sự cố này và chỉ làm chậm sự cố xuất hiện.

Chúng tôi đã khắc phục sự cố / sửa chữa nó bằng cách chuyển SimpleJDBCCall thành một DAO đơn lẻ để chỉ có một con trỏ mở cho mỗi proc oracle mà chúng tôi gọi. Những con trỏ này mở trong suốt thời gian tồn tại của ứng dụng - điều mà tôi coi là một lỗi. Miễn là OPEN_CURSORS lớn hơn số lượng đối tượng SimpleJDBCCall thì sẽ không có phức tạp.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Xóa các hàng trùng lặp trong Oracle SQL, để lại các mục mới nhất

  2. Lỗi Oracle kiểu dữ liệu không nhất quán:CHAR dự kiến ​​nhận được DÀI

  3. Công cụ tích hợp dữ liệu Oracle (ODI)

  4. cách tạo một thủ tục được lưu trữ trong oracle chấp nhận mảng tham số

  5. Oracle REGEXP_SUBSTR đến SUBSTR + INSTR