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

Oracle डेटाबेस में Undo और Redo क्या है?

बहुत से लोग अक्सर मुझसे सवाल पूछते हैं

Oracle डेटाबेस में पूर्ववत और फिर से करें क्या है ? इसका क्या उपयोग है?

मैं यहां पोस्ट में इसके बारे में सभी संदेहों को दूर करने की कोशिश कर रहा हूं

Oracle में पूर्ववत् क्या है?

पूर्ववत करें डेटाबेस में पूर्ववत करें टेबलस्पेस में संग्रहीत किया जाता है। जब भी हम कोई सम्मिलित करें, अपडेट करें या हटाएं कथन (डीएमएल ऑपरेशन) जारी करते हैं तो यह बदले गए डेटा ब्लॉक के पहले मानों को संग्रहीत करता है। जब हम कोई डीएमएल स्टेटमेंट जारी करते हैं तो बदले हुए ब्लॉक को बफर कैशे में स्टोर किया जाता है और यूएनडीओ सेगमेंट में उन बदले गए ब्लॉकों के लिए पहले के मान। जब भी हम रोलबैक कमांड जारी करते हैं तो यह पिछले मान पर रोलबैक करने के लिए पूर्ववत खंड का उपयोग करता है।

यह ठीक वैसा ही है जैसा Notepad या Microsoft Word में Undo होता है

हटाने के लिए पूर्ववत करना एक डालने के लिए उससे अधिक है। ऐसा इसलिए है क्योंकि हटाने के लिए पूर्ववत करना वास्तव में पूरी पंक्ति का पुन:सम्मिलित करना है। इसलिए, इसमें पंक्ति के प्रत्येक कॉलम के लिए मूल्यों को "पूर्ववत" करने में सक्षम होना है। मान हटाए जा रहे हैं।

पूर्ववत करें हमें एक उपयोगकर्ता को पढ़ने की स्थिरता भी प्रदान करता है क्योंकि वह केवल पिछले मान देख सकता है जब तक कि कोई लेन-देन नहीं किया जाता है। समझाने के लिए, मैं एक उदाहरण दूंगा

उपयोगकर्ता ए समय पर टेबल पर कर्सर का चयन करें t। कर्सर कुछ समय के लिए चलेगा

उपयोगकर्ता B उसी तालिका को समय t' पर अपडेट करना प्रारंभ करता है।

अब  उपयोगकर्ता A को समय t पर तालिका का पठन संगत संस्करण प्राप्त करना चाहिए। लेकिन कुछ समय बाद उपयोगकर्ता B द्वारा ब्लॉक अपडेट किए जा रहे हैं।

इसलिए Oracle उन खंडों के लिए पूर्ववत करें खंडों का उपयोग करता है, जो उन ब्लॉक के लिए पूर्ववत खंडों से अद्यतन की छवि को पुनर्स्थापित करते हैं ताकि पढ़ने के लिए सुसंगत दृश्य प्राप्त हो सकें

कमिट या रोलबैक के तुरंत बाद पूर्ववत नष्ट नहीं होते क्योंकि उनका उपयोग रीड कंसिस्टेंट मैकेनिज्म में किया जाएगा।

पूर्ववत पुनर्स्थापना का उपयोग करके पुराने प्रतिबद्ध डेटा को देखने के लिए फ्लैशबैक प्रश्नों में भी उनका उपयोग किया जाता है।

डेटाबेस में पूर्ववत डेटा कब तक संग्रहीत किया जाता है?
Oracle, undo_retention पैरामीटर की सहायता से डेटा को कितने समय तक पूर्ववत किया जाना चाहिए, इसका लचीलापन प्रदान करता है। हम पूर्ववत प्रतिधारण (डिफ़ॉल्ट) को प्रबंधित करने के लिए ओरेकल के लिए स्वचालित रूप से undo_management पैरामीटर सेट कर सकते हैं, या यहां तक ​​​​कि इस मान को मैन्युअल रूप से सेट कर सकते हैं और इसका मान आपके डेटाबेस में सबसे लंबे समय तक चलने वाली क्वेरी द्वारा लिए गए समय से अधिक होना चाहिए। 11g में Oracle ने इस पैरामीटर को स्वचालित रूप से ट्यून किया पूर्ववत तालिका स्थान के आकार के अनुसार

लेन-देन क्या है ?
एक लेन-देन SQL डेटा हेरफेर भाषा (DML) कथनों का संग्रह है जिसे एक तार्किक इकाई के रूप में माना जाता है।
किसी भी कथन की विफलता के परिणामस्वरूप लेन-देन "पूर्ववत" हो जाता है। यदि सभी विवरण प्रक्रिया, SQLPlus या प्रोग्रामिंग एप्लिकेशन डेटाबेस परिवर्तन को स्थायी बनाने के लिए एक COMMIT जारी करेगा। यदि कोई उपयोगकर्ता Oracle से सामान्य रूप से डिस्कनेक्ट करता है तो लेन-देन निहित रूप से प्रतिबद्ध होता है। प्रगति।

Oracle में फिर से करें क्या है?

Redo का अर्थ है जो काम किया गया है उसे रिकॉर्ड करना, ताकि काम खो न जाए। REDO लॉग का उपयोग पुनर्प्राप्ति में किया जाता है। जब भी हम डेटाबेस में इन्सर्ट करते हैं, तो यह निम्नलिखित चीजें करता है

  1. पंक्ति को बफर में डालें
  2. बफर में पूर्ववत करें उत्पन्न करें
  3. फिर से करें बदलाव लिखें यानी रीडो लॉग में पंक्तियां डालें
  4. फिर से करें लॉग में सेगमेंट के लिए फिर से करें बदलाव लिखें

इसलिए डेटाबेस में किया गया प्रत्येक डीएमएल ऑपरेशन पुनर्प्राप्ति उद्देश्य के लिए फिर से लॉग में दर्ज किया जाता है

SGA में Redo को सबसे पहले रीडो लॉग बफर में लिखा जाता है। लॉग राइटर (LGWR) प्रक्रिया इन परिवर्तनों को 'redo log buffer' से डिस्क में लॉग फाइल को फिर से करने के लिए लिखती है

रीडो लॉग मानवीय गलती, ओएस दोष, हार्ड डिस्क विफलता के कारण किसी भी डेटा हानि को बहाल करने में मदद करते हैं।

डेटाबेस के संचालन के लिए फिर से करें लॉग महत्वपूर्ण हैं क्योंकि यह दोष सहनशीलता प्रदान करता है।

डेटाफ़ाइल में तालिकाओं में परिवर्तन लिखने से पहले, Oracle पहले रीडो बफ़र को रीडो लॉग फ़ाइल में लिखें।

हमारे पास कुछ ऑपरेशन के लिए नो-लॉगिंग का विकल्प उपलब्ध है  फिर से बफर उत्पन्न न करें।

लॉग फिर से करें कैसे काम करता है
Oracle सर्वर क्रमिक रूप से डेटाबेस में किए गए सभी परिवर्तनों को फिर से लॉग बफर में रिकॉर्ड करता है। फिर से करें प्रविष्टियां फिर से लॉग बफर से ऑनलाइन रीडो लॉग समूहों में से एक में लिखी जाती हैं जिसे LGWR प्रक्रिया द्वारा वर्तमान ऑनलाइन फिर से लॉग समूह कहा जाता है। LGWR
निम्न स्थितियों के तहत लिखता है:
• जब कोई लेन-देन होता है
• जब रीडो लॉग बफर एक तिहाई पूर्ण हो जाता है
• जब एक मेगाबाइट से अधिक परिवर्तित रिकॉर्ड होते हैं रीडो लॉग बफ़र में
• डेटाबेस बफ़र कैशे में DBWn लिखने से पहले डेटा फ़ाइलों में संशोधित ब्लॉक
फिर से लॉग का उपयोग चक्रीय तरीके से किया जाता है। प्रत्येक पुन:लॉग फ़ाइल समूह की पहचान एक लॉग अनुक्रम संख्या द्वारा की जाती है जो हर बार लॉग के पुन:उपयोग पर अधिलेखित हो जाती है। LGWR ऑनलाइन रीडू लॉग फाइलों को क्रमिक रूप से लिखता है। जब मौजूदा ऑनलाइन फिर से करें लॉग समूह भर जाता है, तो LGWR अगले समूह को लिखना शुरू कर देता है। इसे लॉग स्विच कहा जाता है। जब अंतिम उपलब्ध ऑनलाइन रीडो लॉग फ़ाइल भर जाती है, तो LGWR पहले ऑनलाइन फिर से करें
लॉग समूह में वापस आ जाता है और फिर से लिखना शुरू कर देता है।

संबंधित लेख

बहुत सारे फिर से उत्पन्न करने वाले सत्र को कैसे खोजें
सिस्टम स्विच लॉगफाइल बदलें v/s संग्रह लॉग करेंट
Oracle डेटाबेस में फिर से करें लॉग फ़ाइलें बनाएं
वरिष्ठ oracle dba साक्षात्कार प्रश्न


  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 वॉलेट का उपयोग किया जाता है तो सही JDBC URL सिंटैक्स क्या है?

  2. Oracle शटडाउन त्रुटि ORA-01033

  3. Oracle में एक चर घोषित और प्रदर्शित कैसे करें

  4. ओरेकल में एलटीआरआईएम () फ़ंक्शन

  5. क्वेरी से अधिक मान लौटाने की प्रक्रिया में कर्सर