고아 화신이란 무엇입니까?


9

이 사이트의 다른 질문대한 답변 으로 설명이 설명되어 있습니다. 대답은 '분리 된'화신을 언급합니다.

… ORPHANED 화신 및 OBSOLETE 백업을 초래하는 다른 요인이 있습니다…

내가 볼 오라클 문서에서V$DATABASE_INCARNATION 포함 STATUS의 값을 가질 수 있습니다 열 ORPHAN, CURRENT또는 PARENT관련되어야한다.

'고아'화신이란 무엇이며, 어떤 단계에서 STATUS= ORPHANin V$DATABASE_INCARNATION?

답변:


8

다음은 데이터베이스의 화신에서 고아가 생성 될 때 설명하는 데 사용하는 간단한 그래픽입니다. 질문에 대한 답변 에서 화신을 설명하는 데 사용한 그래픽의 변형입니다. 누구나 Oracle 데이터베이스의 "화신"개념을 이해하기 쉬운 방식으로 설명 할 수 있습니까?

나는 당신이 여행을 즐기시기 바랍니다.

                                          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를 통해 자신의 길을 클릭하여 타사 공급 업체로부터 복원 / 복구를 시작합니다.

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

그래픽을 사용하여 화신 1을 포함하는 경로에서 화신 2를 포함하는 경로로 이동했음을 알 수 있습니다. 데이터베이스를 열었고 RESETLOGS데이터베이스가 새 화신을 만들었 기 때문입니다.

특정 시점으로 데이터베이스 복원 (2)

첫 번째 복원 / 복구 작업 후와 오후 15:00 (3pm) 약간 후에 데이터베이스가 계속 실행되고 있다고 가정 해 봅시다. 누군가 같은 날 15:00 (3pm)에 새 복원 / 복구를 전체 시간으로 되돌려 야한다고 결정합니다.

RMAN은 파일을 복원하고 데이터베이스를 복구 ALTER DATABASE OPEN RESETLOGS하며 데이터베이스를 다시 온라인 상태로 전환합니다. INCARNATION #이 이제 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 (오후 5시) 약간 후에 데이터베이스가 계속 실행 중이라고 가정 해 보자. 누군가 같은 날 14:00 (2pm)에 새로운 복원 / 복구가 필요하다고 결정합니다.

RMAN은 파일을 복원하고 데이터베이스를 복구 ALTER DATABASE OPEN RESETLOGS하며 데이터베이스를 다시 온라인 상태로 전환합니다. INCARNATION #이 이제 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 (오후 6시)에 광장에 서 있습니다. 이제 그 줄을 처음으로 다시 가면 화신에서 나갈 것입니다. 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인지 확인합니다. 그러나 그것은 다른 Q & A에 대한 이야기입니다 ...


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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.