Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

रिजल्टसेट को बंद करना लेकिन रेडीमेडमेंट को बंद नहीं करना

लीक अधिकतम ओपन-कर्सर मुद्दा होगा।

ORA-01000: maximum open cursors exceeded

यदि अधिकतम खुले कर्सर को पार कर लिया जाता है, तो डेटाबेस अनुपयोगी हो जाएगा, केवल उन कर्सर को छोड़कर जो पहले से ही आयोजित हैं। हालांकि, अधिकांश समय जब ऐसा होता है तो होल्ड किए गए कर्सर का भी उपयोग नहीं किया जाता है (जो आपके प्रश्न में होगा)।

जावा 7 के बाद से, इसे संभालने का सबसे अच्छा तरीका एक कोशिश करना है। संसाधनों के साथ . दोनों ResultSet और PreparedStatement AutoCloseable लागू करता है इंटरफ़ेस जिसका अर्थ है कि जब आवश्यकता नहीं होगी तो उन्हें बंद कर दिया जाएगा।

अगर आपके पास जावा 7 नहीं है, तो आपको इसे finally में हैंडल करना होगा ब्लॉक करें, लेकिन सुनिश्चित करें कि आप बंद करने से पहले शून्य मानों के लिए सत्यापित करते हैं अन्यथा यदि संसाधन को कभी भी प्रारंभ नहीं किया गया था तो आप एक एनपीई का सामना कर सकते हैं।

ध्यान दें कि रिवर्स से कोई समस्या नहीं होगी क्योंकि स्टेटमेंट को बंद करने से उसका रिजल्ट सेट अपने आप बंद हो जाएगा।

ध्यान दें कि अधिकतम से अधिक होने की कम संभावना के लिए आप आसानी से अधिक कर्सर को अपने आवेदन की अनुमति दे सकते हैं।

ALTER SYSTEM SET open_cursors = 400 SCOPE=BOTH;

हालांकि, अधिकांश समय यदि आप अधिकतम खुले कर्सर का सामना करते हैं तो यह समाधान नहीं होना चाहिए क्योंकि यह केवल वास्तविक समस्या को छुपाएगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. अल्पाइन लाइनक्स पर Oracle

  2. Oracle के लिए JDBC का उपयोग करके ResultSet को पुनरावृत्त करने में लगभग 16s में बहुत समय लगता है?

  3. ASP.NET वेबसाइट को ODP.NET के साथ परिनियोजित करना

  4. DBMS_SCHEDULER जॉब रन हर घंटे उदाहरण

  5. मेरे पास प्रोग्राम है जिसे मैं तुलना करना चाहता हूं तिथियां लाएं और वांछित डेटा लाएं