एक अनाथ अवतार क्या है?


9

अवतार से वर्णन किया गया एक जवाब के लिए एक और सवाल इस साइट पर। उत्तर में 'अनाथ' अवतारों का उल्लेख है:

... ऐसे अन्य कारक हैं जिनके परिणामस्वरूप ORPHANED अवतार और OBSOLETE बैकअप मिलते हैं ...

मैं देख रहा हूँ ओरेकल डॉक्स से कि V$DATABASE_INCARNATIONएक भी शामिल STATUSस्तंभ के मान हो सकते हैं जो ORPHAN, CURRENTया PARENTहै, जो संबंधित होना चाहिए।

'अनाथ' अवतार क्या हैं, और किन कदमों से STATUS= ORPHANमें एक पंक्ति होगी V$DATABASE_INCARNATION?

जवाबों:


8

निम्नलिखित एक लघु ग्राफिक है जिसका उपयोग मैं यह समझाने के लिए करूंगा कि जब एक डेटाबेस के अवतारों में अनाथों का निर्माण किया जाता है। यह ग्राफिक का एक रूप है जिसका उपयोग मैंने अपने प्रश्न के उत्तर में अवतारों को समझाने के लिए किया था। क्या कोई मुझे ओरेकल डेटाबेस में "अवतार" की अवधारणा को आसान तरीके से समझा सकता है?

मुझे आशा है कि आप यात्रा का आनंद लेंगे।

                                          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 हैं। लेकिन यह एक अलग क्यू एंड ए के लिए एक कहानी है ...


7

RC_DATABASE_INCARNATION

ORPHAN यदि यह एक गैर-समवर्ती अवतार है जो वर्तमान अवतार का प्रत्यक्ष पूर्वज नहीं है।

प्रजनन करने कि प्रक्रिया:

SQL> select incarnation#, status from v$database_incarnation;

INCARNATION# STATUS
------------ -------
           1 PARENT
           2 CURRENT

SQL> select current_scn from v$database;

CURRENT_SCN
-----------
    3393014

SQL> shu immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area 1073741824 bytes
Fixed Size                  8628936 bytes
Variable Size             394265912 bytes
Database Buffers          662700032 bytes
Redo Buffers                8146944 bytes
Database mounted.
SQL> flashback database to scn 3393014;

Flashback complete.

SQL> alter database open resetlogs;

Database altered.

SQL> select incarnation#, status from v$database_incarnation;

INCARNATION# STATUS
------------ -------
           1 PARENT
           2 PARENT
           3 CURRENT

SQL> select current_scn from v$database;

CURRENT_SCN
-----------
    3393975

SQL> shu immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area 1073741824 bytes
Fixed Size                  8628936 bytes
Variable Size             394265912 bytes
Database Buffers          662700032 bytes
Redo Buffers                8146944 bytes
Database mounted.
SQL> flashback database to scn 3393200;

Flashback complete.

SQL> alter database open resetlogs;

Database altered.

SQL> select incarnation#, status from v$database_incarnation;

INCARNATION# STATUS
------------ -------
           1 PARENT
           2 PARENT
           3 PARENT
           4 CURRENT

SQL> shu immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area 1073741824 bytes
Fixed Size                  8628936 bytes
Variable Size             394265912 bytes
Database Buffers          662700032 bytes
Redo Buffers                8146944 bytes
Database mounted.
SQL> flashback database to scn 3393014;

Flashback complete.

SQL> alter database open resetlogs;

Database altered.

SQL> select incarnation#, status from v$database_incarnation;

INCARNATION# STATUS
------------ -------
           1 PARENT
           2 PARENT
           3 ORPHAN
           4 ORPHAN
           5 CURRENT
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.