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

परिणाम सेट बंद करने के बाद Oracle कर्सर को नहीं हटाता है

init.ora पैरामीटर open_cursors एक सत्र में एक बार में अधिकतम खुले कर्सर को परिभाषित करता है। इसका डिफ़ॉल्ट मान 50 है। यदि एप्लिकेशन इस संख्या से अधिक है तो "ORA-01000:अधिकतम खुले कर्सर पार हो गए" त्रुटि उठाई जाती है।

इसलिए JDBC संसाधनों को बंद करना अनिवार्य है, जब उनकी अब और आवश्यकता नहीं है, विशेष रूप से java.sql.ResultSet और java.sql.Statement। यदि वे बंद नहीं हैं, तो एप्लिकेशन में संसाधन रिसाव है।

कनेक्शन ऑब्जेक्ट का पुन:उपयोग करने के मामले में, आपको इस तथ्य से अवगत होना चाहिए कि खुले ऑरेकल कर्सर खुले रखे जाते हैं और जब तक कनेक्शन मौजूद रहता है तब तक उपयोग में रहता है और लेनदेन समाप्त नहीं हुआ है। जब एप्लिकेशन सबमिट हो जाता है, तो खुले हुए कर्सर रिलीज़ हो जाते हैं।

इसलिए एक एप्लिकेशन डिज़ाइनर के रूप में आपको अपने सबसे जटिल लेन-देन के लिए आवश्यक खुले कर्सर का एक मोटा अनुमान जानने की आवश्यकता है।

कठिनाई ऑरेकल के आंतरिक पैरामीटर दृश्यों (v$open_cursor, v$sesstat, et. al.) की अक्षमता में है, जो खुले कर्सर के बीच अंतर दिखाने के लिए है, जो पुन:प्रयोज्य और खुले कर्सर हैं, जो अभी भी अवरुद्ध हैं (पुन:प्रयोज्य नहीं!) एक बंद ResulSet या स्टेटमेंट। यदि आप अपने अंतिम ब्लॉक में सभी स्टेटमेंट और रिजल्टसेट ऑब्जेक्ट को बंद कर देते हैं, तो आपका एप्लिकेशन बिल्कुल ठीक है।

Init.ora पैरामीटर को एडजस्ट करना इस तरह काम करता है (हमारे एप्लिकेशन को अधिकतम 800 कर्सर चाहिए)

ALTER SYSTEM SET open_cursors = 800 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. यदि पहला कॉलम मान समान है तो दूसरे कॉलम मान को कॉनकैट करें

  2. तालिका में प्रत्येक आईडी के लिए अधिकतम लगातार वर्ष खोजें (ओरेकल एसक्यूएल)

  3. मैं Oracle SQL डेवलपर में चर का उपयोग कैसे करूं?

  4. Oracle डेटाबेस में PL/SQL पैकेज कैसे बनाएँ?

  5. ऑरैकल में कॉलम द्वारा दो टेबल कॉलम की तुलना कैसे करें