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

फिर से लॉग समूह बनाम फ़ाइल बनाम सदस्य की समझ

इस Oracle ट्यूटोरियल में, हम फिर से लॉग समूह बनाम फ़ाइल बनाम सदस्य को समझने का एक आसान तरीका बताएंगे।

आज हम Oracle में रीडो लॉग बफर की अवधारणा को सीखने जा रहे हैं। जिसमें हम जानेंगे कि रीडो लॉग बफर क्या है, यह कैसे काम करता है और Oracle आर्किटेक्चर में इसकी क्या भूमिका है।

यदि आप Oracle आर्किटेक्चर को समझना चाहते हैं, तो रीडो लॉग बफर के कार्य को समझना वास्तव में महत्वपूर्ण है। नीचे दिया गया लेख आपको साक्षात्कार के सवालों से निपटने में भी मदद करेगा।

फिर से करें लॉग समूह बनाम फ़ाइल बनाम सदस्य की समझ

फिर से करें लॉग बफर क्या है?

यह एक छोटा मेमोरी आवंटन है जो आमतौर पर डिफ़ॉल्ट रूप से लगभग 14mb होता है। यह एक चक्रीय बफर है। एक बार जब यह भर जाता है तो यह फिर से ऊपर से लिखना शुरू कर देता है, यह भर जाने पर डेटा को अधिलेखित कर देता है।

फिर से करें प्रविष्टि और परिवर्तन वेक्टर क्या है?

Oracle डेटाबेस इंस्टेंस सभी DML/DDL लेनदेन को SGA के रीडो लॉग बफर में फिर से प्रविष्टियों के रूप में रिकॉर्ड करता है। लेन-देन में व्यक्तिगत विवरण के परिणामस्वरूप एक या एक से अधिक फिर से प्रविष्टियाँ होंगी। इन सभी फिर से करें प्रविष्टियों को सामूहिक रूप से एक परिवर्तन वेक्टर या फिर से करें वेक्टर कहा जाता है।

प्रत्येक फिर से करें प्रविष्टि में उदाहरण के लिए फिर से करें कथन और पूर्ववत कथन शामिल हैं:

टेबल ईएमपी
Empno Name

Deptno
1 जॉन 10
2 टोनी 20
3 लौरा 50
4 टाइगर 10
5 स्कॉट 10
sql>delete empno from emp where deptno=10;

उपरोक्त उदाहरण में, emp तालिका में deptno =10 के लिए 3 रिकॉर्ड हैं। तो Oracle उपरोक्त कथन के लिए 3 फिर से प्रविष्टियाँ बनाएगा और ये प्रविष्टियाँ फिर से लॉग बफर में दर्ज हो जाएँगी। इन 3 फिर से करें प्रविष्टियों को सामूहिक रूप से एक परिवर्तन वेक्टर या फिर से करें वेक्टर कहा जाता है।

परिवर्तन वेक्टर और कुछ नहीं बल्कि एक ही ऑपरेशन से प्रभावित पंक्तियों की संख्या है। रीडो लॉग बफर उपयोगकर्ता के लेन-देन को कैप्चर करता है और यह उस लेनदेन के लिए शून्य प्रभाव (पूर्ववत विवरण) को भी कैप्चर करता है।

एलजीडब्ल्यूआर प्रक्रिया का कार्य करना

चूंकि रीडो लॉग बफर का आकार छोटा है जो गतिशील रूप से नहीं बढ़ सकता है, इन रिकॉर्ड की गई रीडो प्रविष्टियों को समय-समय पर डिस्क पर एक ऑनलाइन रीडो लॉग फ़ाइल में लिखा जाना चाहिए। इसे अक्सर रीडो लॉग बफर की फ्लशिंग कहा जाता है और डिस्क पर इन रीडो प्रविष्टियों को लिखने का काम LGWR प्रक्रिया द्वारा किया जाता है।

जब LGWR डिस्क पर फिर से प्रविष्टियां लिखता है?

LGWR इन प्रविष्टियों को डिस्क पर लिखने में काफी आक्रामक है। जब LGWR डिस्क पर फिर से प्रविष्टियाँ लिखता है तो नीचे की घटनाएँ हैं।

  • जब बफ़र का आकार 1/3 भरा हो
  • जब रीडो लॉग बफर में लिखने के लिए लंबित 1 एमबी परिवर्तन वेक्टर उपलब्ध हों
  • हर 3 सेकंड में
  • जब भी कोई चौकी होती है
  • जब कोई उपयोगकर्ता अपना लेनदेन करता है

फिर से लॉग बफर के आकार को सेट करने के लिए एक पैरामीटर

log_buffer=x बाइट्स
रीडो लॉग बफर की संरचना

फिर से करें वास्तुकला में 3 चीजें शामिल हैं

  1. थ्रेड फिर से करें (तार्किक)
  2. समूहों को फिर से तैयार करें(तार्किक)
  3. सदस्य फ़ाइलें फिर से करें (भौतिक)
<एच3>1. रीडो लॉग थ्रेड क्या है?
  • नियंत्रण फ़ाइल बनाते समय "MAXINSTANCES" पैरामीटर द्वारा दिया जाता है।
  • फिर से करें धागा फिर से समूहों से बना होता है। फिर से करें थ्रेड को चालू करने के लिए सक्षम होना चाहिए।
  • आरएसी वातावरण में, आप init.ora पैरामीटर "थ्रेड" का उपयोग करके किसी विशेष इंस्टेंस के साथ फिर से करें थ्रेड को बाइंड कर सकते हैं।

एक गैर-आरएसी डेटाबेस में, ज्यादातर एक थ्रेड (थ्रेड =1) होगा

<एच3>2. Redo log Group और उसकी स्थिति को समझना?

-कंट्रोल फाइल बनाते समय इसे "MAXLOGFILES" पैरामीटर के रूप में दिया जाता है।
-एक फिर से करें लॉग समूह समान रीडो लॉग सदस्य फ़ाइलों का एक संग्रह है।
-लेकिन बेहतर फॉल्ट टॉलरेंस के लिए प्रत्येक रीडो लॉग ग्रुप में दो रीडो लॉग मेंबर फाइल रखना आम बात है।
-यदि कोई खो जाता है, तो इसका कोई प्रभाव नहीं पड़ता है। पुन:लॉग सदस्य फ़ाइलें समान हैं (दर्पण प्रतियां)
LGWR समानांतर में दिए गए फिर से लॉग समूह के सभी सदस्यों को लिखता है
किसी भी समय LGWR प्रक्रिया केवल एक फिर से लॉग समूह को लिखती है। फिर से करें लॉग समूह निश्चित है इसका मतलब है कि फिर से लॉग सदस्य फ़ाइलें गतिशील रूप से नहीं बढ़ सकती हैं।
फिर से करें लॉग समूह जिसमें LGWR प्रक्रिया वर्तमान में लिख रही है उसे "वर्तमान" स्थिति के साथ देखा जाता है
एक बार फिर से लॉग समूह भर जाने के बाद LGWR प्रक्रिया अगले फिर से लॉग समूह को स्विच कर देगी।
पिछला समूह "सक्रिय" स्थिति दिखाएगा और कुछ समय बाद स्थिति "निष्क्रिय" होगी
वर्तमान => सक्रिय => निष्क्रिय => वर्तमान => सक्रिय => निष्क्रिय …………………………
वर्तमान स्थिति का अर्थ है ओरेकल वर्तमान में इस बफर में लिख रहा है
सक्रिय इस बफ़र में फिर से करें प्रविष्टियों का चेकपॉइंट लंबित है
निष्क्रिय स्थिति का मतलब है कि रीडो लॉग को चेकपॉइंट कर दिया गया है और इसे तुरंत ओवरराइट किया जा सकता है।
आप एक बार बनाए गए फिर से लॉग समूह का आकार नहीं बदल सकते हैं, लेकिन आप हमेशा अलग-अलग आकारों के साथ फिर से लॉग समूह को छोड़ देते हैं और फिर से बनाते हैं। आप "वर्तमान" या "सक्रिय" स्थिति के साथ फिर से लॉग समूह को नहीं छोड़ सकते।

फिर से करें लॉग समूह कैसे बदलें?

आम तौर पर LGWR स्वचालित रूप से फिर से लॉग समूहों के बीच स्विच करता है लेकिन आप कमांड का उपयोग करके मैन्युअल रूप से एक फिर से लॉग समूह से दूसरे में स्विच कर सकते हैं।

sql>alter system switch logfile ;

हर बार LGWR एक नया फिर से लॉग समूह चुनता है और यह उस रीडो लॉग समूह को "लॉग अनुक्रम संख्या" या "अनुक्रम #" नामक एक नीरस रूप से वृद्धिशील संख्या प्रदान करता है। आप व्यू का उपयोग करके फिर से लॉग समूह मेटाडेटा को क्वेरी कर सकते हैं:- v$log फिर से लॉग समूह भौतिक डिस्क ब्लॉक आकार (512 बाइट्स के क्षेत्र) का उपयोग करके लिखे गए हैं

नया फिर से करें लॉग समूह कैसे जोड़ें

sql>alter database add logfile group 3 ('/path/to/member1.log', '/path/to/member2.log') size 100m reuse;

यहाँ पुन:उपयोग का अर्थ कहता है, फ़ाइलों का पुन:उपयोग करें सदस्य 1.लॉग या सदस्य 2. लॉग फ़ाइल यदि यह पहले से ही उसी पथ में मौजूद है।

फिर से करें लॉग समूह को कैसे छोड़ें

आप लॉग समूहों को फिर से छोड़ सकते हैं बशर्ते कि स्थिति वर्तमान या सक्रिय न हो। साथ ही इस आदेश को लागू करने के बाद उपलब्ध रीडो लॉग समूहों की संख्या 2 या अधिक होनी चाहिए।

sql>alter database drop logfile groups 3;
<एच3>3. सदस्य फ़ाइलें फिर से करें (भौतिक)

नियंत्रण फ़ाइल बनाते समय यह "MAXLOGMEMBERS" पैरामीटर द्वारा दिया जाता है। पुन:लॉग सदस्य फ़ाइलें भौतिक रूप से OS स्तर पर उपलब्ध हैं। फ़ाइल का आकार फिर से लॉग समूह निर्माण के समय तय किया जाता है।

फ़ाइल गतिशील रूप से नहीं बढ़ सकती है। LGWR समानांतर में दिए गए फिर से लॉग समूह के सभी सदस्यों को लिखता है।
पुन:लॉग समूह में सदस्य फ़ाइलें समान हैं। आप v$logfile दृश्य से स्थिति की जानकारी पूछ सकते हैं

मौजूदा समूह में नया सदस्य कैसे जोड़ें?

sql>alter database add logfile member '/path/to/new/member1.log' to group 3;

आप किसी सदस्य को समूह से हटा सकते हैं बशर्ते कि एक सदस्य बना रहे और समूह की स्थिति वर्तमान न हो

sql>alter database drop logfile member '/path/to/member_to_be_deleted.log';

रीडो लॉग स्विचिंग विवरण को क्वेरी करने के लिए
आप v$log-इतिहास

. को क्वेरी कर सकते हैं
sql>select count(*), trunc(first_time) from v$log_history;

फिर से करें प्रविष्टियों को अधिलेखित करने के लिए समूह

मुझे अलर्ट में "चेकपॉइंट पूर्ण नहीं" क्यों दिखाई देता है। लॉग

जब LGWR फिर से प्रविष्टियों को अधिलेखित करने के लिए एक पुन:लॉग समूह में आता है और उस समय तक यदि उस समूह का एक चेकपॉइंट लंबित है तो आपको अलर्ट लॉग में एक संदेश दिखाई देगा "चेकपॉइंट पूर्ण नहीं" इस वजह से LGWR फिर से लॉग समूह को तुरंत अधिलेखित नहीं कर सकता है।

इसलिए ओरेकल "चेकपॉइंट" को ट्रिगर करेगा जो डिस्क पर फिर से प्रविष्टियों के कारण गंदे बफर को फ्लश करेगा। इसके बाद ही LGWR बफर को फिर से करने के लिए ओवरराइट कर सकता है। इसका मतलब है कि LGWR को कुछ समय इंतजार करना होगा जो कि अच्छा नहीं है। इस पर काबू पाने के लिए या तो अधिक लॉग समूह जोड़ें और/या फिर से लॉग समूहों का आकार बढ़ाएं।

हमें उम्मीद है कि हमारे उपरोक्त विवरण आपको फिर से लॉग बफर की अपनी समझ को स्पष्ट करने में मदद करेंगे।

यह ट्यूटोरियल का अंत है, फिर से लॉग समूह बनाम फ़ाइल बनाम सदस्य की समझ।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL क्या है और इसे कैसे शुरू करें?

  2. वसंत एकीकरण क्या है?

  3. एसक्यूएल बाधाएं

  4. स्ट्रिंग विभाजन / संयोजन विधियों की तुलना करना

  5. RMAN कमांड ORA-00904:"BS" के साथ विफल हो जाते हैं।" GUID":अमान्य पहचानकर्ता