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

ओरेकल प्रतिबद्ध और चयन के बीच अंतराल

डिफ़ॉल्ट रूप से, आपके द्वारा वर्णित व्यवहार असंभव होना चाहिए - एक प्रतिबद्ध लेनदेन में किए गए परिवर्तन सभी सत्रों के लिए तुरंत उपलब्ध हो जाते हैं। हालांकि, अपवाद हैं:

  1. क्या आप COMMIT कमांड में किसी WRITE विकल्प का उपयोग कर रहे हैं? यदि आप नहीं हैं, तो अपने COMMIT_WRITE आरंभीकरण पैरामीटर के मान की पुष्टि करें। यदि या तो "WRITE BATCH" या विशेष रूप से "WRITE BATCH NowAIT" का उपयोग कर रहे हैं, तो आप अपने आप को समवर्ती मुद्दों के लिए खोल सकते हैं। "WRITE BATCH NowAIT" आमतौर पर उन मामलों में उपयोग किया जाएगा जहां आपके लेखन लेनदेन की गति संभावित समवर्ती मुद्दों की तुलना में अधिक महत्वपूर्ण है। यदि आपका इनिशियलाइज़ेशन पैरामीटर "WRITE" वेरिएंट का उपयोग कर रहा है, तो आप इसे अपने कमिट में IMMEDIATE क्लॉज निर्दिष्ट करके लेनदेन के आधार पर ओवरराइड कर सकते हैं (देखें COMMIT)

  2. क्या वह लेन-देन जो अन्य लेन-देन करने से पहले SET TRANSACTION को लागू करने वाले डेटा को पढ़ने का प्रयास कर रहा है? SERIALIZATION LEVEL READ ONLY या SERIALIZABLE निर्दिष्ट करने के लिए SET TRANSACTION का उपयोग करने से लेन-देन में कोई बदलाव नहीं होगा जो SET TRANSACTION के आह्वान के बाद हुए अन्य प्रतिबद्ध सत्रों से होता है (देखें SET TRANSACTION)

संपादित करें:मैं देखता हूं कि आप डेटासोर्स क्लास का उपयोग कर रहे हैं। मैं इस वर्ग से परिचित नहीं हूँ - मुझे लगता है कि यह एक कनेक्शन साझाकरण संसाधन है। मुझे एहसास है कि आपका वर्तमान ऐप डिज़ाइन आपके पूरे कार्य प्रवाह में समान कनेक्शन ऑब्जेक्ट का उपयोग करना आसान नहीं बना सकता है (चरणों को स्वतंत्र रूप से संचालित करने के लिए डिज़ाइन किया जा सकता है, और आपने एक चरण से कनेक्शन ऑब्जेक्ट को पास करने की सुविधा में निर्माण नहीं किया है। अगला), लेकिन आपको यह सत्यापित करना चाहिए कि डेटा स्रोत ऑब्जेक्ट में लौटाए जा रहे कनेक्शन ऑब्जेक्ट "क्लीन" हैं, विशेष रूप से खुले लेनदेन के संबंध में। यह संभव हो सकता है कि आप अपने कोड में SET TRANSACTION का आह्वान नहीं कर रहे हैं, लेकिन डेटा स्रोत का कोई अन्य उपभोक्ता कहीं और ऐसा कर रहा है, और सत्र के साथ डेटा स्रोत पर कनेक्शन वापस लौटा रहा है, जो अभी भी SERIALIZABLE या केवल पढ़ने के लिए मोड में है। कनेक्शन साझा करते समय, यह अनिवार्य है कि सभी कनेक्शन नए उपभोक्ता को सौंपने से पहले वापस ले लिए जाएं।

यदि आपके पास डेटा स्रोत वर्ग के व्यवहार पर कोई नियंत्रण या दृश्यता नहीं है, तो आप यह सुनिश्चित करने के लिए नए अधिग्रहीत कनेक्शन पर रोलबैक निष्पादित करने का प्रयास कर सकते हैं कि यह पहले से स्थापित कोई लंबा लेनदेन नहीं है।



  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. Oracle तालिकाओं में बड़े आकार के डेटा को कैसे सम्मिलित/अपडेट करें?

  3. ORA-30926:स्रोत तालिका में पंक्तियों का एक स्थिर सेट प्राप्त करने में असमर्थ

  4. मौजूदा चेक बाधा को कैसे संशोधित करें?

  5. Oracle में एक तिथि से दिन प्राप्त करने के 2 तरीके