निम्नलिखित एक लघु ग्राफिक है जिसका उपयोग मैं यह समझाने के लिए करूंगा कि जब एक डेटाबेस के अवतारों में अनाथों का निर्माण किया जाता है। यह ग्राफिक का एक रूप है जिसका उपयोग मैंने अपने प्रश्न के उत्तर में अवतारों को समझाने के लिए किया था। क्या कोई मुझे ओरेकल डेटाबेस में "अवतार" की अवधारणा को आसान तरीके से समझा सकता है?
मुझे आशा है कि आप यात्रा का आनंद लेंगे।
restore db +-----+ +-----+ +-----+
recover db | 2>3 | --> | 3 | --> | 3 | --> ...
resetlogs +-----+ +-----+ +-----+ ^
^ Incarn 3 3 | 3
/ SCN # 500 600 | 700
/ |
/ |
restore db +-----+ +-----+ +-----+ |
recover db | 1>2 | -------> | 2 | --> | 2 | --> ... |
resetlogs +-----+ +-----+ +-----+ ^ |
^ Incarn. 2 \ 2 | 2 |
/ SCN # 300 \ 400 | 500 |
/ \ | |
/ + --------------------+ |
+-----+ +-----+ +-----+ | \ +-----+ | +-----+
--> | 1 | --> | 1 | --> | 1 | --> ... | +-> | 2>4 | --> | 4 |
+-----+ +-----+ +-----+ ^ | restore db +-----+ | +-----+
Incarn. 1 1 1 | 1 2 | recover db | 4
SCN # 100 200 300 | 400 400 | resetlogs | 400
| | |
Backup 11:00 ----- 12:00 ----- 13:00 ----- 14:00 ----- 15:00 ----- 16:00 ----- 17:00 ----- 18:00
| | |
Restore/ (1) (2) (3)
Recovery
डेटाबेस को पॉइंट टू टाइम बहाल करना (1)
13:00 (1pm) के बाद कुछ समय में किसी ने फैसला किया कि डेटाबेस को 12:00 (12 बजे दिन) तक बहाल करना होगा। DBA या तो उस समय में डेटाबेस को पुनर्स्थापित करने के लिए RMAN आदेशों का एक समूह सेट करता है या एक शानदार GUI के माध्यम से एक 3-पार्टी विक्रेता से पुनर्स्थापना / वसूली शुरू करने के लिए अपना रास्ता क्लिक करता है।
RMAN डेटाबेस के पूर्ण बैकअप को पुनः प्राप्त करता है और सभी संग्रह डिस्क / टेप से बैकअप लॉग करता है और उन्हें डिस्क पर पुनर्स्थापित करता है। रिकवरी चरण में RMAN जाँच करेगा कि सभी प्रासंगिक जानकारी उपलब्ध है और सभी समाप्त हुए लेनदेन को प्वाइंट टू टाइम में रोल करें और सभी अधूरे लेन-देन को वापस प्वाइंट टू टाइम में रोल करें, यह सुनिश्चित करने के लिए कि डेटाबेस एक सुसंगत स्थिति में है।
डेटाबेस को आम जनता के लिए खोलने से पहले, डेटाबेस को यह सुनिश्चित करना होगा कि सभी भविष्य के बैकअप पिछले बैकअप के साथ संघर्ष न करें। यह तब होता है जब एक नया अवतार बनाया जाना चाहिए और यह तब होता है जब आप डेटाबेस को खोलने के लिए निम्न कमांड निष्पादित करते हैं:
ALTER DATABASE OPEN RESETLOGS;
आप अपने (वर्तमान) अवतारों के पदानुक्रमित दृश्य को प्राप्त करने के लिए अपने उदाहरण के विरुद्ध निम्न स्क्रिप्ट चला सकते हैं:
set pages 50 --- repeat header every 50 records
set lines 230 --- set lines(ize) length to 230
column path format a40 --- set column path to alpha-numeric 40
alter sessiosn set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';
--- set date format of date columns to something more detailed
select
INCARNATION#,
PRIOR_INCARNATION#,
RESETLOGS_CHANGE#,
RESETLOGS_TIME,
STATUS,
SYS_CONNECT_BY_PATH(INCARNATION#, ' -> ') Path
FROM v$database_incarnation
WHERE LEVEL >=1 START WITH INCARNATION# = '1'
CONNECT BY PRIOR INCARNATION# = PRIOR_INCARNATION#
ORDER BY LEVEL, Path, RESETLOGS_TIME;
डेटाबेस का वर्तमान अवतार इसके समान होगा:
INCARNATION# PRIOR_INCARNATION# RESETLOGS_CHANGE# RESETLOGS_TIME STATUS PATH
------------ ------------------ ----------------- ------------------- ------- --------------------
1 0 1 2017-03-08 15:57:31 PARENT -> 1
2 1 200 2018-07-27 13:20:00 CURRENT -> 1 -> 2
ग्राफिक का उपयोग करके हम देख सकते हैं कि हम अवतार 2 वाले मार्ग से अवतार 2 वाले पथ से चले गए हैं, क्योंकि हमने डेटाबेस को खोल दिया है RESETLOGS
और डेटाबेस ने एक नया अवतार बनाया है।
समय में प्वाइंट (2) के लिए डेटाबेस को पुनर्स्थापित करना
चलो फिर से मान लेते हैं कि डेटाबेस पहले पुनर्स्थापना / वसूली की कार्रवाई के बाद चलता रहता है और 15:00 (3pm) के बाद थोड़ा सा होता है। कोई व्यक्ति तय करता है कि उसी दिन 15:00 (3pm) को वापस एक नया रिस्टोर / रिकवरी शुरू करना है।
RMAN फ़ाइलों को पुनर्स्थापित करेगा, डेटाबेस को पुनर्प्राप्त करेगा और ALTER DATABASE OPEN RESETLOGS
डेटाबेस को ऑनलाइन वापस लाने के लिए एक सेट करेगा। स्थापना # अब 3 पर सेट होगी और 16:00 पर पहले बैकअप में जानकारी होगी:
INCARNATION# 3
SCN# 500
Time......... 16:00
यदि हम उपरोक्त स्क्रिप्ट का उपयोग करते हुए डेटाबेस में अवतारों की व्याख्या करते हैं तो हमें कुछ इस तरह मिलेगा:
INCARNATION# PRIOR_INCARNATION# RESETLOGS_CHANGE# RESETLOGS_TIME STATUS PATH
------------ ------------------ ----------------- ------------------- ------- --------------------
1 0 1 2017-03-08 15:57:31 PARENT -> 1
2 1 200 2018-07-27 13:20:00 PARENT -> 1 -> 2
3 2 400 2018-07-27 15:20:00 CURRENT -> 1 -> 2 -> 3
समय में प्वाइंट करने के लिए डेटाबेस को बहाल करना (3)
चलो फिर से मान लेते हैं कि डेटाबेस दूसरी पुनर्स्थापना / पुनर्प्राप्ति कार्रवाई के बाद भी चलता रहता है और 17:00 (5pm) के बाद थोड़ा सा किसी को तय करता है कि उसी दिन 14:00 (2pm) तक एक नया पुनर्स्थापना / पुनर्प्राप्ति होना चाहिए।
RMAN फ़ाइलों को पुनर्स्थापित करेगा, डेटाबेस को पुनर्प्राप्त करेगा और ALTER DATABASE OPEN RESETLOGS
डेटाबेस को ऑनलाइन वापस लाने के लिए एक सेट करेगा। स्थापना # अब 4 पर सेट होगी और 18:00 पर पहले बैकअप में जानकारी होगी:
INCARNATION# 4
SCN# 400
Time......... 18:00
यदि हम उपरोक्त स्क्रिप्ट का उपयोग करते हुए डेटाबेस में अवतारों की व्याख्या करते हैं तो हमें कुछ इस तरह मिलेगा:
INCARNATION# PRIOR_INCARNATION# RESETLOGS_CHANGE# RESETLOGS_TIME STATUS PATH
------------ ------------------ ----------------- ------------------- ------- --------------------
1 0 1 2017-03-08 15:57:31 PARENT -> 1
2 1 200 2018-07-16 13:20:00 PARENT -> 1 -> 2
3 2 400 2018-07-17 15:20:00 ORPHAN -> 1 -> 2 -> 3
4 2 300 2018-07-17 17:20:00 CURRENT -> 1 -> 2 -> 4
क्या हुआ है? हमारे पास एक अनाथ है!
अनाथ अवतार ...
यदि आप ग्राफिक को देखते हैं, तो हम वर्तमान में अवतार 4 और SCN 400 के साथ 18:00 (6pm) वर्ग पर खड़े हैं। अब यदि आप शुरुआत में उस लाइन का अनुसरण करते हैं, तो आप देख सकते हैं कि हम अवतार से जाएंगे 4 अवतार 2 तक वापस और फिर वापस अवतार 1 के लिए, जो कि जब डेटाबेस बनाया गया था।
यह मेरी स्क्रिप्ट के आउटपुट (सरलीकृत) से भी मेल खाता है।
INCARNATION# PRIOR_INCARNATION# RESETLOGS_CHANGE# RESETLOGS_TIME STATUS PATH
------------ ------------------ ----------------- ------------------- ------- --------------------
4 2 300 2018-07-17 17:20:00 CURRENT -> 1 -> 2 -> 4
तो अवतार 3 के साथ क्या हुआ? क्या अवतार 3 खराब है या बासी है या क्या देता है?
उत्तर
नहीं, अवतार 3 बुरा नहीं है, यह सिर्फ अनाथ है।
बैकअप और पुनर्स्थापना के बीच अधिक समय के साथ बड़े पैमाने पर, आप अभी भी अवतार के वंश में एक समय के लिए डेटाबेस को पुनर्स्थापित / पुनर्प्राप्त कर सकते हैं। 3. आप निम्नलिखित कमांड को सेट करेंगे:
RESET DATABASE TO INCARNATION 3;
... और फिर उस समय में डेटाबेस को उस समय तक पुनर्स्थापित / पुनर्प्राप्त करें जैसे आप अन्य डेटाबेस को पुनर्स्थापित / पुनर्प्राप्त करेंगे।
क्या ORPHAN
स्थिति, आपको बता है कि अवतार 3 अब मौजूदा अवतार 4. अनाथ अवतार 3 नहीं रह गया है बहाल / वर्तमान समय के साथ डेटाबेस ठीक करने के लिए आवश्यक है के साथ डेटाबेस की वर्तमान स्थिति से संबंधित है।
... अप्रचलित बैकअप में परिणाम
अब अनाथ अवतार के संबंध में डेटाबेस बैकअप को देखते हुए, अच्छी तरह से RMAN यह निर्धारित करता है कि अनाथ अवतार के बैकअप OBSOLETE हैं। लेकिन यह एक अलग क्यू एंड ए के लिए एक कहानी है ...