Oracle
की लॉकिंग अवधारणा अन्य प्रणालियों से काफी अलग है।
जब Oracle
. में एक पंक्ति लॉक हो जाता है, रिकॉर्ड को नए मान (यदि कोई हो) के साथ अपडेट किया जाता है और, इसके अलावा, एक लॉक (जो अनिवार्य रूप से रोलबैक सेगमेंट में रहने वाले लेनदेन लॉक का सूचक होता है) को सीधे रिकॉर्ड में रखा जाता है।
इसका मतलब है कि Oracle
. में रिकॉर्ड लॉक करना इसका अर्थ है रिकॉर्ड के मेटाडेटा को अपडेट करना और एक तार्किक पेज राइट जारी करना। उदाहरण के लिए, आप SELECT FOR UPDATE
. नहीं कर सकते हैं रीड ओनली टेबलस्पेस पर।
इसके अलावा, रिकॉर्ड स्वयं प्रतिबद्ध होने के बाद अपडेट नहीं होते हैं:इसके बजाय, रोलबैक सेगमेंट अपडेट किया जाता है।
इसका मतलब यह है कि प्रत्येक रिकॉर्ड में लेन-देन के बारे में कुछ जानकारी होती है, जिसने इसे अंतिम बार अपडेट किया था, भले ही लेन-देन की मृत्यु हो गई हो। यह पता लगाने के लिए कि लेन-देन जीवित है या नहीं (और, इसलिए, यदि रिकॉर्ड जीवित है या नहीं), तो रोलबैक खंड पर जाना आवश्यक है।
ओरेकल के पास पारंपरिक लॉक मैनेजर नहीं है, और इसका मतलब है कि सभी लॉक की सूची प्राप्त करने के लिए सभी ऑब्जेक्ट्स में सभी रिकॉर्ड स्कैन करने की आवश्यकता होती है। इसमें बहुत अधिक समय लगेगा।
आप कुछ विशेष लॉक प्राप्त कर सकते हैं, जैसे लॉक किए गए मेटाडेटा ऑब्जेक्ट (v$locked_object
. का उपयोग करके) ), लॉक प्रतीक्षा (v$session
. का उपयोग करके) ) आदि, लेकिन डेटाबेस में सभी वस्तुओं पर सभी तालों की सूची नहीं।