LINUX
2019.02.15 / 19:12

티베로 제6장 백업과 복구

hanulbit
추천 수 3

https://technet.tmaxsoft.com/upload/download/online/tibero/pver-20150504-000001/tibero_admin/ch_BackupRecovery.html


제6장 백업과 복구

Tibero는 시스템의 예상치 못한 오류 등으로 인해 데이터베이스가 비정상적으로 종료하거나 시스템에 물리적인 손상을 입은 상황을 대처하려고 다양한 백업과 복구 방법을 제공한다.

본 장에서는 이러한 백업과 복구 방법을 설명한다.

6.1. Tibero 구성 파일

Tibero의 파일은 컨트롤 파일(Control file), 데이터 파일(Data file), 임시 파일(Temp file), 로그 파일(Log file)로 구성된다.

각 파일의 특징과 역할은 다음과 같다.

  • 컨트롤 파일(Control file)

    컨트롤 파일은 Tibero를 구성하는 모든 파일의 위치와 데이터베이스의 이름 등 데이터베이스의 구조를 저장하는 파일이다. 특히, Tibero가 사용하는 데이터 파일, 로그 파일 등의 상태 정보가 기록된다. 컨트롤 파일은 Tibero를 기동할 때 복구가 필요한지를 판단하는 데 사용된다.

    컨트롤 파일은 데이터베이스의 복구에 매우 중요한 파일이므로 다른 물리적 파티션에 여러 개 지정하기를 권장한다. 여러 개를 유지하면 한 파티션에 장애가 발생하여 컨트롤 파일을 사용하지 못하더라도 다른 컨트롤 파일을 이용하여 복구할 수 있다.

    컨트롤 파일은 현재의 데이터베이스를 구성하는 파일에 관한 정보를 담고 있으므로 반드시 최신 것으로 유지해야 한다. 컨트롤 파일의 백업은 현재의 컨트롤 파일 자체를 백업하는 방식으로 이루어지지 않고, 컨트롤 파일을 생성하는 CREATE CONTROLFILE 문을 백업해 두었다가 복구가 필요한 경우 백업해 놓은 컨트롤 파일 생성문을 사용하여 컨트롤 파일을 다시 생성하는 방식으로 이루어진다.

    최신의 컨트롤 파일을 유지하기 위해서는 데이터베이스에 파일을 추가하거나 변경하는 등 구조상 변화가 있을 때마다 컨트롤 파일의 생성문을 백업해야 한다. 컨트롤 파일 자체를 백업해 두었다가 사용하는 것은 NOARCHIVELOG 모드에서처럼 데이터베이스 전체를 백업하는 경우에만 사용할 수 있다.

  • 데이터 파일(Data file)

    데이터 파일은 사용자의 데이터를 저장하는 파일로써 로그 파일과 함께 데이터베이스를 구성하는 가장 중요한 파일이다.

    Permanent 테이블 스페이스와 Undo 테이블 스페이스에서 정의한 파일로 테이블, 인덱스 등의 데이터베이스 객체를 저장한다. 테이블 스페이스는 한 개 이상의 데이터 파일로 이루어지며, 한 데이터 파일은 하나의 테이블 스페이스에 속한다.

    데이터 파일은 사용자의 데이터가 물리적으로 저장되는 공간이므로 반드시 백업해야 한다.

  • 임시 파일(Temp file)

    임시 파일은 데이터베이스가 메모리에서 처리할 수 없는 방대한 양의 데이터를 다루는 경우 임시로 사용하기 위한 공간이다.

    Tibero는 사용자의 질의를 처리하기 위해 정렬 등의 연산을 수행할 때와 임시 테이블(Temporary Table)의 데이터를 저장할 때 데이터 파일을 사용한다. 데이터 파일은 임시 테이블 스페이스(Temporary Tablespace)에서만 정의할 수 있고, 임시 테이블 스페이스는 하나 이상의 데이터 파일을 가질 수 있다.

    임시 파일은 데이터베이스를 구성하는 데이터가 물리적으로 저장되지는 않고 운영 중에 임시로 사용되는 영역이므로 백업할 필요가 없다.

  • 로그 파일(Log file)

    로그 파일은 로그를 저장하는 파일이다. 데이터 파일에 기록되는 내용을 시간 순으로 기록하는 파일로써 데이터베이스를 복구할 때 사용한다.

    로그 파일은 운영 중에 순환적으로 재사용되는 온라인 로그 파일과 재사용된 온라인 로그 파일을 보관하는 아카이브 로그 파일로 나뉜다.

    ARCHIVELOG 모드로 운영 중일 때만 아카이브 로그 파일이 만들어진다. NOARCHIVELOG 모드에서는 온라인 로그 파일만 사용한다. NOARCHIVELOG 모드에서는 재사용되어 없어진 로그 파일이 있을 수 있으므로 복구할 때 많은 제약이 따른다.

    로그 파일은 데이터베이스 복구할 때 복원된 데이터 파일을 최신 상태로 복구하기 위해, 데이터베이스가 어떻게 변경되어 왔는지에 대한 모든 정보를 기록한다. 따라서 데이터 파일과 함께 반드시 백업을 해야 한다.

6.2. 백업

백업(Backup)은 여러 가지 유형의 장애로부터 데이터베이스를 보호하는 것을 뜻한다. 즉, 시스템 장애가 발생했을 때 복구를 하거나 시스템 작동을 유지하기 위한 절차 또는 기법이다.

Tibero는 데이터베이스를 백업하는 방법을 크게 두 가지로 나누어 수행할 수 있다.

  • 논리적 백업

    논리적 백업이란 테이블, 인덱스, 시퀀스와 같은 데이터베이스의 논리적 단위를 백업하는 것을 뜻한다. Tibero에서는 이를 위해 tbExport와 tbImport 유틸리티를 제공하고 있다. tbExport와 tbImport에 대한 자세한 내용은 "Tibero 유틸리티 안내서"를 참고한다.

  • 물리적 백업

    물리적 백업이란 데이터베이스를 구성하는 물리적인 파일을 백업하는 것이며 운영체제에서 파일 복사 명령(COPY)으로 백업하는 것을 뜻한다. 물리적 백업이 필요한 파일에는 데이터 파일과 아카이브 로그 파일이 있다.

    온라인 로그 파일은 NOARCHIVELOG 모드에서 데이터베이스 전체를 백업하여 복구할 경우에만 의미가 있다.

    주의

    데이터베이스가 운영 중일 때 운영체제의 파일 복사 명령을 사용하는 것은 안전하지 않으므로 주의한다.

6.2.1. 백업 종류

본 절에서는 백업의 종류를 설명한다.

다음은 Tibero가 제공하는 백업의 종류이다.

  • 모드별 백업

    데이터베이스를 ARCHIVELOG 모드로 운영할 때와 그렇지 않았을 때 사용할 수 있는 백업 방법이 다르다.

    모드설명
    ARCHIVELOG 모드

    온라인 백업(Online Backup) 또는 Hot Backup이라 한다.

    데이터베이스가 운영 중일 때 백업할 수 있다. 백업이 가능한 파일은 컨트롤 파일의 생성문과 데이터 파일, 아카이브 로그 파일 등이 있다.

    복구는 백업 된 아카이브 로그 파일의 시점에 따라 데이터 파일의 백업 시점 전으로 복구할 수 있다.

    NOARCHIVELOG 모드

    오프라인 백업(Offline Backup) 또는 Cold Backup이라 한다.

    기본적으로 데이터베이스는 NOARCHIVELOG 모드이다.

    데이터베이스를 구성하는 전체 파일은 반드시 Tibero가 정상적으로 종료된 상태에서 백업한다. 백업 때문에 서비스가 중지되면 안 된다. 복구는 데이터베이스를 백업받은 시점으로부터 복구할 수 있다.

  • Consistent 백업

    Tibero를 정상적으로 종료한 상태에서 백업하는 방법이다. 실행 예는 “6.2.2. 백업 실행”의 "Consistent 백업"을 참고한다.

  • Inconsistent 백업

    Tibero의 데이터베이스가 운영 중일 때 백업하거나 정상적으로 종료되지 않은 상태에서 백업하는 방법이다. 실행 예는 “6.2.2. 백업 실행”의 "Inconsistent 백업"을 참고한다. 단, NOARCHIVELOG 모드에서는 정합성 문제가 발생할 수 있으므로 이 방법은 허용되지 않는다.

6.2.2. 백업 실행

본 절에서는 Tibero가 제공하는 물리적 및 논리적인 백업 방법에 따라 백업을 실행하는 예를 설명한다.

데이터 파일이나 로그 파일의 경우에는 데이터베이스 상태에 따라서 백업 받는 방법이 다르므로 이를 각각 데이터베이스가 운영 중인 경우(Inconsistent 백업)와 그렇지 않은 경우(Consistent 백업)로 나누어서 설명한다.

컨트롤 파일 백업

컨트롤 파일은 물리적인 백업과 논리적인 백업을 모두 지원하지만, Tibero에서는 컨트롤 파일의 논리적인 백업을 추천한다. 물리적 백업은 제약사항과 사용법이 복잡하기 때문에 실수를 방지하기 위해 보통 사용하지 않는 것이 좋다. 물리적 백업시 데이터의 정합성을 맞춰주기 위해 모든 데이터 파일을 백업한 후 마지막에 컨트롤 파일을 백업해 주어야 한다. 데이터베이스의 구조에 변화가 일어난 경우에는 컨트롤 파일의 생성문을 백업하는 논리적 백업을 사용하는 것을 권장한다.

다음은 컨트롤 파일을 물리적 백업으로 tibero6/backup 디렉터리에 있는 ctrlfile1.ctl 파일에, 논리적 백업으로 컨트롤 파일의 생선문을 ctrlfile1.sql 파일에 백업하는 예이다.

  • 컨트롤 파일의 물리적 백업

    [예 6.1] 컨트롤 파일의 물리적 백업

    SQL> alter database backup controlfile to 
           '/tibero6/backup/ctrlfile1.ctl';
    
    Altered.

  • 컨트롤 파일의 논리적 백업

    [예 6.2] 컨트롤 파일의 물리적 백업

    SQL> alter database backup controlfile to trace as
           '/tibero6/backup/ctrlfile1.sql' reuse NORESETLOGS;
    
    Altered.

생성된 ctrlfile1.sql 파일은 다음과 같은 내용을 포함한다.

[예 6.3] 백업된 컨트롤 파일 생성문

CREATE CONTROLFILE REUSE DATABASE "inventory"
 LOGFILE
 GROUP 0 (
 '/disk1/log001.log',
 '/disk2/log002.log'
 ) SIZE 1M,
 GROUP 1 (
 '/disk1/log003.log',
 '/disk2/log004.log'
 ) SIZE 1M,
 GROUP 2 (
 '/disk1/log005.log',
 '/disk2/log006.log'
 ) SIZE 1M
 NORESETLOGS
 DATAFILE
 '/disk1/system001.dtf',
 '/disk1/undo001.dtf'
 NOARCHIVELOG
 MAXLOGFILES 255
 MAXLOGMEMBERS 8
 MAXDATAFILES 100
 CHARACTER SET MSWIN949
 NATIONAL CHARACTER SET UTF16
 ; 

RESETLOGS는 컨트롤 파일의 생성문에 지정한 대로 만들어진다. 이 생성문은 트레이스 파일을 생성한 후 RESETLOGS를 필요로 할 경우에 사용하며, RESETLOGS가 필요하지 않은 경우는 NORESETLOGS로 수정하여 컨트롤 파일을 생성할 때 적용할 수 있다.

참고

컨트롤 파일의 생성문에는 임시 파일을 생성하는 내용이 없다. 컨트롤 파일을 생성한 후 Tibero를 기동하면 임시 파일은 존재하지 않는다. 컨트롤 파일을 새로 생성한 경우 반드시 임시 파일을 추가해야 임시 파일을 이용한 기능을 사용할 수 있다.

생성된 컨트롤 파일은 $TB_SID.tip 파일에 경로를 설정한다.

[예 6.4] 컨트롤 파일 경로 설정

CONTROL_FILES=$TB_HOME/database/$TB_SID/

다음과 같이 MOUNT나 OPEN 상태에서 컨트롤 파일의 목록을 조회하려면 동적 뷰 V$CONTROLFILE를 조회한다.

[예 6.5] 컨트롤 파일 조회

SQL> SELECT NAME FROM V$CONTROLFILE;

NAME
------------------------------------------------------------
/disk1/c1.ctl
/disk2/c2.ctl

2 selected.


참고

컨트롤 파일을 다시 생성하기 위해서는 $TB_SID.tip 파일에 설정된 컨트롤 파일의 위치를 [예 6.5]의 질의 결과와 동일하게 설정한 후 CREATE CONTROLFILE 문을 실행해야 한다.

Consistent 백업

본 절에서는 Tibero가 정상적으로 종료한 후에 백업하는 방법을 설명한다.

Consistent 백업을 실행 하기에 앞서 백업할 컨트롤 파일, 데이터 파일, 로그 파일을 조회한다.

다음은 MOUNT나 OPEN 상태에서 동적 뷰 V$DATAFILE를 통해 데이터 파일을 조회하는 방법이다. 여기서 MOUNT는 Tibero의 인스턴스가 시작된 상태이며, OPEN은 컨트롤 파일에 정의한 모든 파일이 오픈된 상태를 의미한다.

[예 6.6] 데이터 파일의 조회

SQL> SELECT NAME FROM V$DATAFILE;

NAME
------------------------------------------------------------
/disk1/system001.dtf
/disk2/undo001.dtf
/disk3/user001.dtf

3 selected.

다음은 온라인 로그 파일을 MOUNT나 OPEN 상태에서 조회하는 방법이다.

[예 6.7] 온라인 로그 파일의 조회

SQL> SELECT MEMBER FROM V$LOGFILE;

MEMBER
------------------------------------------------------------
/disk1/log001.log
/disk2/log002.log
/disk2/log003.log
/disk3/log004.log
/disk3/log005.log
/disk1/log006.log

6 selected.

온라인 로그 파일은 ARCHIVELOG 모드가 아닌 경우에는 백업하지 않는 것이 좋다. ARCHIVELOG 모드에서는 온라인 로그 파일이 아카이브되기 때문에 아카이브된 파일을 백업하면 안 된다. 참고로 아카이브된 파일은 LOG_ARCHIVE_DEST 초기화 파라미터에 설정된 위치에 저장된다.

데이터베이스는 다음과 같이 NORMAL 모드로 종료하는 것이 좋다.

SQL> tbdown NORMAL;
Tibero instance was terminated.

데이터베이스가 정상적으로 종료되면 운영체제별로 제공하는 파일 복사 명령을 사용하여 백업한다.

Inconsistent 백업

본 절에서는 Tibero가 운영 중일 때 백업하는 방법을 설명한다.

데이터베이스가 운영 중이면 운영체제의 명령어를 사용해 데이터 파일을 복사하는 것은 안전하지 않다. 이러면 다음과 같은 문장을 실행하여 Tibero에 백업의 시작과 종료를 통보해야 한다.

alter tablespace {tablespace name} begin backup
...
alter tablespace {tablespace name} end backup

begin backup과 end backup 문장 사이에는 해당 테이블 스페이스의 변경 사항에 대한 로그가 늘어나기 때문에 데이터베이스에 부담이 가중되게 된다. begin backup을 시작한 이후에는 신속하게 백업을 완료하고 end backup 상태로 복귀시켜야 한다.

Inconsistent 백업의 전체 과정은 다음과 같다.

  1. 먼저 백업할 테이블 스페이스를 선정한다.

    [예 6.8] Inconsistent 백업 - 테이블 스페이스의 선정

    SQL> select name,type from v$tablespace;
    
    NAME                           TYPE
    ------------------------------ ----
    SYSTEM                         DATA
    UNDO                           UNDO
    USER                           DATA
    TEMP                           TEMP
    
    3 selected.

  2. 백업할 테이블 스페이스에 속한 데이터 파일을 조회한 후 begin backup, end backup 명령어를 사용하여 백업을 수행한다. 예를 들어 USER 테이블 스페이스를 백업할 경우를 가정하고 수행한다.

    [예 6.9] Inconsistent 백업 - begin backup, end backup 명령어의 사용

    SQL> select f.name
         from v$tablespace t join v$datafile f on t.ts# = f.ts#
         where t.name = 'USER';
    
    NAME
    ------------------------------------------------------------
    /disk3/user001.dtf
    
    1 selected
    
    SQL> alter tablespace SYSTEM begin backup;
    
    Altered.
    
    SQL> !cp /disk3/user001.dtf /backup/
    SQL> alter tablespace  SYSTEM end backup;
    
    Altered.

6.3. 복구

Tibero를 운영하다 보면, 예상치 못한 장애로 인해 정상적인 데이터베이스 운영이 어려운 상황이 발생할 수 있다. 복구는 장애가 발생하는 경우 복원하는 일련의 과정이다.

복구를 하려면 백업된 데이터베이스가 있어야 한다. Tibero는 데이터베이스에서 일어나는 모든 변화를 로그 파일에 기록한다. 따라서 백업 이후에 데이터베이스에 일어난 모든 변화에 대해서는 로그를 적용하면 복구할 수 있다. 로그 파일에는 커밋되지 않은 트랜잭션이 수정한 데이터도 포함되어 있다. 복구할 때 아카이브 로그 파일과 로그 파일 모두 사용할 수 있다.

복구 과정은 다음과 같이 두 가지 경우로 수행할 수 있다.

  • 데이터 파일에 기록되지 않는 변화를 로그를 사용하여 적용하는 과정

    데이터 파일에 모든 로그의 변화를 기록하는 과정을 통해서 데이터베이스는 안정된 상태가 된다. 즉, 데이터베이스 운영상의 특정 시점까지 모든 작업이 반영되고 그 이후의 변화는 발생하지 않아야 한다.

    데이터베이스에 정상적인 복구가 이루어져 안정된 상태가 되어야만 기동할 수 있다.

  • 커밋되지 않는 데이터로 복구하는 과정

    데이터베이스를 종료할 때 커밋하지 않은 트랜잭션이 수정한 내용으로 복구하는 과정이다.

6.3.1. 부트 모드별 복구

Tibero는 부트 모드별로 발생되는 작업을 복구 측면에서 보면 다음과 같다.

  • NOMOUNT 모드

    NOMOUNT 모드로는 언제나 복구할 수 있다. 이 모드에서는 데이터베이스와 컨트롤 파일을 생성할 수 있다. MOUNT 모드로 동작하기 위해서는 컨트롤 파일이 있어야 한다. 컨트롤 파일이 없거나 컨트롤 파일에 장애가 발생한 경우에는 NOMOUNT 모드로 동작하며 컨트롤 파일을 생성하면 MOUNT 모드로 동작할 수 있다.

  • MOUNT 모드

    MOUNT 모드에서는 데이터 파일, 온라인 로그 파일, 컨트롤 파일 사이의 상태를 검사하여 Tibero를 기동할 준비를 한다. 세 파일이 모두 최신 상태이면 OPEN 모드로 동작할 수 있다. 파일에 물리적인 장애가 발생하였거나, 복원된 파일이라면 미디어 복구가 필요하며 MOUNT 모드로 동작한다. MOUNT 모드에서는 제한된 뷰의 조회가 가능하고, 미디어 복구를 수행할 수 있다.

  • OPEN 모드

    Tibero의 데이터 파일, 온라인 로그 파일, 컨트롤 파일이 일관성을 유지할 때에만 OPEN 모드로 동작할 수 있다. OPEN 모드에서 Tibero는 세 파일을 열고 정상으로 동작한다. 일반 사용자는 데이터베이스를 이용할 수 있다.

    오프라인 상태인 테이블 스페이스에 사용자가 접근하려면 우선 해당 테이블 스페이스를 온라인 상태로 전환해야 한다. 이때 다른 파일들과 일관성을 유지하기 위해 해당 테이블 스페이스에 온라인 미디어 복구를 수행해야 한다.

6.3.2. 파손 복구

파손 복구(Crash Recovery)는 Tibero를 운영하는 중에 정전, 시스템 이상, 강제 종료 등으로 데이터베이스가 비정상적으로 종료되었을 때 사용자의 명령 없이 자동으로 복구되는 것을 의미한다. 복구가 완료되면 Tibero가 정상적으로 동작한다.

파손 복구는 온라인 로그 파일의 내용 중 아직 데이터 파일에 반영되지 않은 부분을 기록하여 Tibero가 비정상적으로 종료되기 직전에 운영 시점의 상태로 복구하는 과정과 이러한 상태로 복구된 시점에서 커밋되지 않은 트랜잭션이 발생시킨 변화를 되돌리는 과정으로 나눌 수 있다.

파손 복구의 모든 과정은 파일의 손상이 없으면 DBA의 도움 없이 자동으로 이루어진다.

  • 평균 파손 복구 시간 설정

    Tibero는 평균 파손 복구 시간을 설정 할수 있는 기능(Mean Crash Recovery Time)을 제공하고 있다. Mean Crash Recovery Time(이하 MCRT)은 파손 복구시 필요한 I/O 횟수를 통제함으로써 평균 파손 복구 시간을 조절한다.

    MCRT는 다음 파라미터를 설정해서 조절할 수 있다.

    파라미터설명
    _MCRT_TARGET평균 파손 복구 시간을 설정한다. (기본값: 1800, 단위: 초)

6.3.3. 미디어 복구

Tibero를 구성하는 파일이 물리적인 손상이나 정상적으로 동작할 수 없는 경우가 발생할 수 있다. 이러한 경우 데이터베이스가 정상적으로 동작할 수 있도록 복구하는 과정이 미디어 복구(Media Recovery)이다.

미디어 복구 과정은 자동으로 이루어지지 않는다. DBA가 상황을 파악해서 필요한 과정을 지시하는 일련의 작업이 필요하다. 복구 완료시점을 오류가 발생하기 이전의 가장 최근 시점까지로 할지, 과거의 특정 시점까지로 할지 여부에 따라서 완전 복구(Complete Recovery)와 불완전 복구(Incomplete Recovery)로 구분된다.

완전 복구

온라인 로그 파일의 가장 최근 로그까지 모두 반영하는 미디어 복구이다.

불완전 복구

온라인 로그 파일의 최근까지가 아닌 그 이전의 특정 시점까지 복구하는 것을 말한다. 불완전 복구 후에는 반드시 RESETLOGS 모드로 Tibero를 기동해야 한다. RESETLOGS는 온라인 로그 파일을 초기화하는 것이며, 현재 온라인 로그 파일로 데이터베이스를 시작하지 않을 때 사용한다.

RESETLOGS가 필요한 경우는 다음과 같다.

  • 불완전 미디어 복구를 한 경우

  • RESETLOGS로 컨트롤 파일을 생성한 경우

RESETLOGS로 시작하면 새로운 데이터베이스가 만들어진 것과 같다. RESETLOGS 이전의 데이터 파일, 로그 파일과 RESETLOGS 이후의 파일은 서로 호환되지 않는다. RESETLOGS 이전의 백업 파일이나 로그 파일을 이용하여 RESETLOGS 이후로 복구할 수 없다. 또한 RESETLOGS 이후의 파일을 RESETLOGS 이전 상태로 불완전 복구를 하는 것도 불가능하다. 따라서 RESETLOGS 모드로 기동한 경우에는 반드시 새로 백업을 하기를 권장한다.

RESETLOGS로 데이터베이스를 기동하는 방법은 다음과 같다.

[예 6.10] RESETLOGS를 이용한 데이터베이스의 기동

$ tbboot -t RESETLOGS

미디어 복구 과정은 MOUNT 모드에서만 이루어진다. 백업된 파일을 사용하여 오류가 발생한 파일을 복원하는 과정과 복원된 파일을 백업한 시점으로부터 최근 또는 특정 시점까지 반영되지 않은 변화를 로그 파일을 사용하여 복구하는 과정으로 나눌 수 있다. 단순한 복원 과정만으로는 Tibero의 정상적인 운영이 불가능하다.

미디어 복구를 위해 장애가 발생한 파일을 찾아 복구해야 한다. 이를 위해 다음과 같은 뷰를 제공한다.

  • V$LOGFILE

  • V$CONTROLFILE

  • V$LOG

  • V$RECOVER_FILE

  • V$RECOVERY_FILE_STATUS

미디어 복구는 로그 파일을 하나씩 데이터베이스에 순서대로 반영하여 진행한다. 데이터베이스는 현재 복구에 필요한 로그 파일만을 반영할 수 있다. 현재 필요한 로그 파일을 찾기 위해 시퀀스 번호가 사용된다. 시퀀스 번호는 데이터베이스가 생성된 이후로 만들어진 로그 파일의 일련 번호이며, 모든 로그 파일은 하나의 유일한 시퀀스 번호를 갖는다. 시퀀스 번호가 큰 로그 파일이 최근 로그 파일이다. 시퀀스 번호는 아카이브 로그 파일의 경우 파일 이름을 통해 알 수 있고, 온라인 로그 파일의 경우 V$LOG 뷰를 통해 알 수 있다.

6.3.4. 온라인 미디어 복구

Tibero를 운영하는 도중에 일부 데이터 파일이 물리적으로 손상되거나 정상적으로 동작할 수 없는 경우가 발생할 수 있다. 이러한 경우에 OPEN 모드에서 해당 데이터 파일이 포함된 테이블 스페이스만 미디어 복구를 수행할 수 있다. 이것이 온라인 미디어 복구(Online Media Recovery)이다. 온라인 미디어 복구는 완전 복구만 가능하다.

6.4. 복구 관리자

Tibero는 다양한 백업 및 복구 시나리오를 제공한다. 숙련된 데이터베이스 관리자라면 상황에 맞는 적절한 방법을 선택하고 활용할 수 있을 것이다. 허나 너무 다양한 기능을 제공함으로써 오히려 사용자에게 혼란을 줄 수도 있다. 이러한 면을 보완하기 위하여 Tibero는 복구 관리자(이하 RMGR)를 제공한다.

6.4.1. 기본 기능

RMGR은 다양한 백업/복구 시나리오를 지원하도록 구성되어 있다. Tibero에서 제공되는 RMGR의 기능은 다음과 같다.

  • Online Full Backup

    Tibero 데이터베이스에 속한 전체 데이터 파일을 온라인 백업한다. 온라인 백업을 위해서는 데이터베이스가 ARCHIVELOG 모드이여야 한다. RMGR은 자동으로 데이터베이스의 Begin Backup 기능을 사용하여 모든 테이블 스페이스를 Hot Backup 상태로 만들고 백업을 진행한다.

    백업을 완료하면 데이터베이스의 End Backup 기능을 사용하여 모든 테이블 스페이스를 Hot Backup 상태로부터 해제한다. 백업할 데이터 파일 역시 V$DATAFILE을 조회하여 자동으로 결정해 준다.

  • Incremental Backup

    RMGR를 통해 온라인 백업을 받았으면 이를 이용하여 Incremental Backup을 할 수 있다. Incremental Backup이란 백업을 받을 때 전체 파일을 받는 것이 아니라 이전 백업과의 차이만을 기록하는 방식으로 백업에 소모되는 디스크 공간을 획기적으로 줄일 수 있다.

    Incremental Backup을 하려면 이전에 RMGR를 통해 Online Full Backup을 받았어야 한다. 현재 데이터베이스와 백업본과의 차이를 구하여 백업 파일을 만든다. 이러한 기능은 RMGR를 통해서만 사용할 수 있다.

  • Automatic Recovery

    RMGR을 이용하여 만들어진 백업본을 이용하여 자동 Recovery를 진행한다. Backup 정보는 Controlfile에 저장이 되어있다. Controlfile에 저장된 정보를 기반으로 Online Full Backup/Incremental Backup 정보를 분석하여 자동으로 Merge 후 Recovery해준다. Controlfile이 접근 불가능할때에는 백업된 Controlfile을 이용하여 복구를 진행한다. 단, 이때에는 백업이 존재하는 Backup Dest(-o 옵션)를 명시해주어야 한다.

    주의

    TAC 환경에서 RMGR을 이용한 복구를 진행하기 위해서는 구성 노드 중 한 개의 노드만 떠있는 상황에서 복구를 진행해야 한다.

  • Tablespace 단위 백업 및 복구

    전체 데이터베이스를 백업/복구하는 대신에 필요한 테이블 스페이스만 대상으로 백업/복구 작업을 수행할 수 있다.

  • Delete Backup Set

    RMGR을 이용하여 Controlfile에 등록된 Backup Set을 삭제할 수 있다. 삭제 대상이 되는 Target Backup Set은 Backup Set ID(--backup_set 옵션)를 명시함으로써 지정할 수 있으며, Backup Date(--beforetime 옵션)를 명시하는 경우에는 Backup Date 이전에 Backup이 이루어진 모든 Backup Set들을 삭제 대상으로 지정할 수 있다. Backup Date는 YYYYMMDDHH(24)mmss 형태로 명시한다.

    삭제하고자 하는 Backup Set이 존재하는 백업 경로는 Controlfile을 참조하여 결정하므로, Backup이 이루어진 이후에 백업 경로가 변경된 경우에는 삭제하고자 하는 Backup Set이 존재하는 Backup Dest(-o 옵션)를 명시해주어야 한다. 만약 Controlfile에 등록된 Backup Set을 사용자가 수동으로 삭제하였거나, 잘못된 백업 경로를 명시하여 백업 경로에서 삭제 대상으로 지정된 Backup Set을 찾을 수 없는 경우에는 Controlifle에 등록된 Backup Set Entry만을 삭제하고 종료하게 된다.

6.4.2. 복구 관리자 옵션

RMGR은 셸 명령으로 실행되며 다양한 옵션을 지정하여 원하는 기능을 사용할 수 있다.

옵션설명
backupRMGR를 통해 백업을 진행한다.
recoverRMGR로 받아놓은 백업본을 이용하여 복구를 진행한다.
deleteRMGR로 받아놓은 백업본 중 사용자 입력으로 주어진 조건에 맞는 백업본을 삭제한다.
--userid

데이터베이스에 접속할 사용자명과 패스워드 및 SID를 아래와 같은 형식으로 지정한다.

--userid USERID[[/PASSWD][@SID]]

화면상에 비밀번호 노출을 원치 않을 때에는 비밀번호를 공백으로 입력한 후, 비밀번호를 입력하라는 문구가 나오면 비공개로 번호를 입력할 수 있다.

--userid USERID/[@SID] 

OS 인증을 받은 계정으로 로그인하는 경우 Userid와 Passwd를 입력하지 않아도 로그인 가능하다(단, 현재는 backup과 delete 기능만 가능).

--userid / 
-v, --verboseRMGR의 진행상황을 자세하게 출력한다.
-s, --silentRMGR의 진행상황을 최소로 출력한다.
-h, --helpRMGR의 옵션 사용법을 출력한다.
-i, --incremental가장 최신 백업에 대한 Incremental backup을 수행한다.
-C, --cumulative마지막 full backup에 대한 incremental backup을 수행한다.
-c, --compress백업을 수행할 때 데이터를 압축하여 저장한다. 보통 백업에 소요되는 시간은 늘어나고 생성되는 파일 크기는 줄어든다.
-u, --skip-unused백업을 수행할 때 실제로 사용되지 않은 블록은 백업 파일에 쓰지 않는다. 백업 후 생성되는 파일 크기를 줄일 수 있다.
-o

백업받을/백업받은 디렉터리를 지정한다.

백업할 때 옵션을 주지 않을 경우 RMGR_BACKUP_DEST가 기본 dest로 설정된다. 복구할 경우 옵션을 주지 않으면 백업된 디렉터리를 자동으로 찾아간다. 옵션을 줄 경우 모든 full/incremental backup이 해당 디렉터리에 있어야 한다.

--with-archivelog

백업/복구를 수행할 때 hot backup을 복구하기 위한 아카이브 로그 파일도 함께 백업/복원한다.

tbrmgr backup --with-archivelog

기본적으로 클러스터 환경에서는 지원되지 않으며, 예외적으로 TAC-TAS 구성환경에서 모든 instance가 active stroage 상의 동일한 LOG_ARCHIVE_DEST를 공유하는 경우에 한하여 지원된다.

백업된 아카이브 로그 파일은 다음의 형식으로 관리된다.

bkl_<BACKUPSET#>_t<THREAD#>-r<RESETLOGS TSN>-s<SEQUENCE#>.arc

예를 들어 BACKUPSET#는 1, THREAD#는 0, RESETLOGS TSN는 0, SEQEUNCE#는 1인 경우 파일명은 'bkl_1_t0-r0-s1.arc'이 된다.

--for-standby

standby 구축을 위한 백업 및 복구를 진행한다.

cluster 환경에서는 아카이브 로그 백업을 지원하지 않기 때문에, 아카이브 로그는 직접 백업/복원해야 한다

--clone

데이터 파일 백업 이후 온라인 Redo 로그 백업도 수행한다(DB 클로닝에 사용).

클론 DB 구축을 위해서는 수동으로 로그 파일을 DB 디렉터리에 옮긴 후 복구를 수행한다.

--before-time

백업을 삭제할 때 명시된 시점 이전의 백업들을 삭제한다.

시간은 YYYYMMDDHHMMSS의 형식이다.

tbrmgr delete --before-time 20130614165736 
--backup_set

백업을 삭제할 때 명시된 Backup Set도 삭제한다.

tbrmgr delete --backup_set 1 
--untiltime

시간기반 불완전 복구를 수행한다.

옵션에서 지정한 시간까지 변경된 내용만 복구된다.

시간은 YYYYMMDDHHMMSS의 형식이다.

tbrmgr recover --untiltime 20130614165736 
--untilchange

변경 기반 불완전 복구를 수행한다.

옵션에서 지정한 TSN까지 변경된 내용만 복구된다.

tbrmgr recover --untilchange 16218
--tablespace

복구 또는 백업할 대상 테이블 스페이스를 지정한다.

테이블 스페이스를 지정한 경우 데이터베이스의 일부만 백업/복구한다.

tbrmgr backup -o /backup/ --tablespace usr,system
--with-password-file

데이터 파일(datafile)을 백업/복구하는 경우 password file을 함께 백업/복구한다.

tbrmgr backup --with-password-file
--wallet

암호화된 테이블 스페이스에 접근하기 위한 인증작업을 수행한다.

사용자가 명시한 PASSWORD를 통해 WALLET을 열고 복구를 시작한다.

tbrmgr recover --wallet PASSWORD
-p, --parallel THREAD_COUNT

사용자가 명시한 THREAD_COUNT만큼 스레드를 할당하여 병렬 백업/복구를 수행한다.

tbrmgr backup --parallel THREAD_COUNT
--recover-to

데이터 파일 / 로그 파일을 해당 디렉터리로 옮긴 후 복구를 수행한다.

완전 복구를 원한다면 온라인 리두 로그를 먼저 해당 디렉터리로 옮긴 후 수행해야 한다.

TAS 환경에서는 지원하지 않는다.

tbrmgr backup --recover-to /tibero_new_directory/ 

6.4.3. 복구 관리자를 이용한 백업 및 복구 예제

본 절에서는 다음의 백업/복구 시나리오를 통해서 RMGR을 이용한 백업/복구를 설명한다.

주의

RMGR의 Online (Full / Incremental) Backup을 통해 생성된 Backup Set을 이용하여 Recovery를 수행하기 위해서는 Archive Log File이 반드시 필요하다. 따라서 Archive Log File이 유실될 경우에 대비하여 Online (Full / Incremental) Backup시 Archive Log File도 함께 Backup (--with-archivelog 옵션) 해두는 것이 바람직하다. TAC 환경에서는 RMGR을 이용한 Archive Log Backup이 지원되지 않는다.

RMGR은 대부분의 과정을 자동으로 진행하기 때문에 사용자가 실행 명령을 통해 작업을 명시해준 이후에는 특별히 관리해야 할 사항이 없다. RMGR이 작업을 진행하는 동안에는 작업의 진행 과정을 살펴볼 수 있다.

RMGR을 통해 Backup을 진행한 이후에는 V$BACKUP_SET을 통해 Backup Set 정보를 조회할 수 있으며, V$BACKUP_ARCHIVED_LOG를 통해 Archive Log Backup 정보를 조회할 수 있다. V$BACKUP_SET_TABLESPACE를 조회하면 각 Backup Set에 대한 Tablespace 정보를 확인할 수 있다.

참고

데이터 파일이 Raw Device 파일 및 Tibero Active Storage인 경우에도 RMGR을 이용한 Backup 및 Recovery가 가능하다. 단, Active Storage를 사용할 때 미리 Active Storage Instance를 설정 및 부팅을 하여야 한다.

Online Full Backup 시나리오

RMGR을 이용하여 임의의 백업 경로에서 Online Full Backup을 수행할 수 있으며(-o 옵션), 백업 경로를 명시하지 않은 경우에는 RMGR_BACKUP_DEST가 기본 dest로 설정된다.

[예 6.11] Online Full Backup 시나리오

$ tbrmgr backup -o /home/tbrdb/work/6/backup/  
==================================================================
= Recovery Manager(RMGR) starts                                  =
=                                                                =
= TmaxData Corporation Copyright (c) 2008-. All rights reserved. =
==================================================================
=============================================
  RMGR - ONLINE backup
=============================================
DB connected
archive log check succeeded
 100.00% |=======================================>|  12800/12800  blks 0.08s
Synchronizing...
 100.00% |=======================================>|  25600/25600  blks 0.18s
Synchronizing...
 100.00% |=======================================>|  12800/12800  blks 0.10s
Synchronizing...
 100.00% |=======================================>|   1280/1280   blks 0.02s
Synchronizing...
Database full backup succeeded
DB disconnected
RMGR backup ends

$ tbsql sys/tibero

SQL> set line 200
SQL> col START_TIME for a20
SQL> col FINISH_TIME for a20
SQL> select * from V$BACKUP_SET a;


    SET_ID START_TIME
---------- ----------------------------------------------------------------
FINISH_TIME                                                       START_TSN
---------------------------------------------------------------- ----------
FINISH_TSN RESETLOGS_TSN   BASE_SET   SIZE(KB) IS_PARTIAL IS_INCREMENTAL
---------- ------------- ---------- ---------- ---------- --------------
WITH_ARCHIVELOG
---------------
         1 2018/06/11
2018/06/11                                                            36321
     36338             0          0     453588 NO         NO
NO


1 row selected.

SQL> select * from V$BACKUP_ARCHIVED_LOG;

0 row selected.


Compress 옵션과 Skip Unused 옵션을 적용한 Online Full Backup 시나리오

데이터를 압축하여 Backup Set을 생성하는 Compress(-c) 옵션과 실제로 사용되지 않은 블록을 백업 대상에서 제외하는 Skip Unused(-u) 옵션을 함께 적용하여 Online Full Backup을 수행할 수 있다.

[예 6.12] Compress 옵션과 Skip Unused 옵션을 적용한 Online Full Backup 시나리오

$ tbrmgr backup -c -u -o /home/tbrdb/work/6/backup/  
==================================================================
= Recovery Manager(RMGR) starts                                  =
=                                                                =
= TmaxData Corporation Copyright (c) 2008-. All rights reserved. =
==================================================================
=============================================
  RMGR - ONLINE backup
=============================================
DB connected
archive log check succeeded
 100.00% |=======================================>|  12800/12800  blks 1.00s
Synchronizing...
 100.00% |=======================================>|  25600/25600  blks 1.85s
Synchronizing...
 100.00% |=======================================>|  12800/12800  blks 0.00s
Synchronizing...
 100.00% |=======================================>|   1280/1280   blks 0.06s
Synchronizing...
Database full backup succeeded
DB disconnected
RMGR backup ends


With Archive Log 옵션을 적용한 Online Full Backup 시나리오

RMGR을 이용한 Backup을 수행하는 경우 with Archive Log(--with-archivelog) 옵션을 적용함으로써, 백업 경로에 데이터 파일에 대한 Backup과 함께 Archive Log Backup을 생성할 수 있다. Online Backup을 이용하여 Recovery를 수행하기 위해서는 Archive Log가 반드시 필요하므로, Archive Log Backup을 생성함으로써 원본 Archive Log File이 유실되는 경우에도 정상적으로 Recovery를 진행할 수 있다.

백업된 아카이브 로그 파일은 다음의 형식으로 관리된다.

bkl_<BACKUPSET#>_t<THREAD#>-r<RESETLOGSTSN>-s<SEQUENCE#>.arc

예를 들어 BACKUPSET#는 1, THREAD#는 0, RESETLOGS TSN는 0, SEQEUNCE#는 1인 경우 파일명은 'bkl_1_t0-r0-s1.arc'이 된다.

V$BACKUP_SET을 조회함으로써 각 Backup Set에 Archive Log Backup이 존재하는지 확인할 수 있으며, V$BACKUP_ARCHIVED_LOG를 조회함으로써 Archive Log Backup의 정보를 확인할 수 있다.

[예 6.13] With Archive Log 옵션을 적용한 Online Full Backup 시나리오

$ tbrmgr backup --with-archivelog -o /home/tbrdb/work/6/backup/  
==================================================================
= Recovery Manager(RMGR) starts                                  =
=                                                                =
= TmaxData Corporation Copyright (c) 2008-. All rights reserved. =
==================================================================
=============================================
  RMGR - ONLINE backup
=============================================
DB connected
archive log check succeeded
 100.00% |=======================================>|  12800/12800  blks 0.08s
Synchronizing...
 100.00% |=======================================>|  25600/25600  blks 0.18s
Synchronizing...
 100.00% |=======================================>|  12800/12800  blks 0.08s
Synchronizing...
 100.00% |=======================================>|   1280/1280   blks 0.02s
Synchronizing...
Database full backup succeeded
DB disconnected
RMGR backup ends

$ tbsql sys/tibero

SQL> set line 200
SQL> col START_TIME for a20
SQL> col FINISH_TIME for a20
SQL> select * from V$BACKUP_SET a;

    SET_ID START_TIME
---------- ----------------------------------------------------------------
FINISH_TIME                                                       START_TSN
---------------------------------------------------------------- ----------
FINISH_TSN RESETLOGS_TSN   BASE_SET   SIZE(KB) IS_PARTIAL IS_INCREMENTAL
---------- ------------- ---------- ---------- ---------- --------------
WITH_ARCHIVELOG
---------------
         1 2016/06/16
2016/06/16                                                           34386 
     34441             0          0     453588 NO         NO
YES


1 row selected.

SQL> set line 200
SQL> col MIN_LOG_TIME for a20
SQL> col MAX_LOG_TIME for a20
SQL> col RESETLOG_TIME for a20
SQL> select * from V$BACKUP_ARCHIVED_LOG a;

    SET_ID MIN_LOG_TSN MAX_LOG_TSN MIN_LOG_TIME         MAX_LOG_TIME
---------- ----------- ----------- -------------------- --------------------
         1       34386       34441 2016/06/16           2016/06/16

MIN_LOG_SEQUENCE MAX_LOG_SEQUENCE RESETLOG_TSN RESETLOG_TIME
---------------- ---------------- ------------ --------------------
               2                2            0

1 row selected.


With Archive Log 옵션을 적용한 Incremental Backup 시나리오

앞서 Online Full Backup을 통해 생성된 Full Backup Set이 최소 1개 이상 존재하는 경우에는 가장 최신의 Backup Set과 현재 상태를 비교하여 변경사항만을 Backup하는 Incremental Backup을 수행할 수 있다. 변경사항만을 Backup하므로 Full Backup Set에 비해 Backup Set의 Size를 획기적으로 줄일 수 있지만, 앞선 Backup Set이 유실되어 비교 대상이 사라지게 되면 Backupset을 Database Recovery에 사용할 수 없는 위험성이 존재한다.

V$BACKUP_SET을 조회함으로써 각 Backup Set이 Incremental Backup Set인지 확인할 수 있으며, Incremental Backup시 비교 대상이 되는 Backup Set(Base Set)의 ID를 확인할 수 있다. Full Backup Set의 경우 Base Set이 존재하지 않으므로 Base Set ID가 0으로 표기된다.

[예 6.14] With Archive Log 옵션을 적용한 Incremental Backup 시나리오

$ tbrmgr backup -i --with-archivelog -o /home/tbrdb/work/6/backup/ 
==================================================================
= Recovery Manager(RMGR) starts                                  =
=                                                                =
= TmaxData Corporation Copyright (c) 2008-. All rights reserved. =
==================================================================
=============================================
  RMGR - INCREMENTAL backup
=============================================
DB connected
archive log check succeeded
 100.00% |=======================================>|  12800/12800  blks 0.04s
Synchronizing...
 100.00% |=======================================>|  25600/25600  blks 0.04s
Synchronizing...
 100.00% |=======================================>|  12800/12800  blks 0.02s
Synchronizing...
 100.00% |=======================================>|   1280/1280   blks 0.02s
Synchronizing...
Database incremental backup succeeded
DB disconnected
RMGR backup ends

$ tbsql sys/tibero

SQL> set line 200
SQL> col START_TIME for a20
SQL> col FINISH_TIME for a20
SQL> select * from V$BACKUP_SET a;

    SET_ID START_TIME
---------- ----------------------------------------------------------------
FINISH_TIME                                                       START_TSN
---------------------------------------------------------------- ----------
FINISH_TSN RESETLOGS_TSN   BASE_SET   SIZE(KB) IS_PARTIAL IS_INCREMENTAL
---------- ------------- ---------- ---------- ---------- --------------
WITH_ARCHIVELOG
---------------
         1 2016/06/16
2018/06/11                                                            34386
     34441             0          0     453588 NO         NO
YES

         2 2016/06/16
2018/06/11                                                            34448
     35234             0          1      23730 NO         YES
YES


2 rows selected.

SQL> set line 200
SQL> col MIN_LOG_TIME for a20
SQL> col MAX_LOG_TIME for a20
SQL> col RESETLOG_TIME for a20
SQL> select * from V$BACKUP_ARCHIVED_LOG a;

    SET_ID MIN_LOG_TSN MAX_LOG_TSN MIN_LOG_TIME         MAX_LOG_TIME
---------- ----------- ----------- -------------------- --------------------
         1       34386       34441 2016/06/16           2016/06/16
         2       34448       35234 2016/06/16           2016/06/16


MIN_LOG_SEQUENCE MAX_LOG_SEQUENCE RESETLOG_TSN RESETLOG_TIME
---------------- ---------------- ------------ --------------------
               2                2            0
               6                6            0

2 row selected.


Online Full Backup을 이용한 Recovery 시나리오

RMGR은 Online Full Backup을 통해 생성된 Backup Set을 이용하여 Recovery를 수행할 수 있다. 아래 예제는 Backup Set에 Archive Log Backup이 존재하지 않는 경우로, 이 경우에는 원본 Archive Log File을 가지고 있어야 Recovery를 진행할 수 있다.

[예 6.15] Online Full Backup을 이용한 Recovery 시나리오

$ tbsql sys/tibero

SQL> set line 200
SQL> col START_TIME for a20
SQL> col FINISH_TIME for a20
SQL> select * from V$BACKUP_SET a;

    SET_ID START_TIME
---------- ----------------------------------------------------------------
FINISH_TIME                                                       START_TSN
---------------------------------------------------------------- ----------
FINISH_TSN RESETLOGS_TSN   BASE_SET   SIZE(KB) IS_PARTIAL IS_INCREMENTAL
---------- ------------- ---------- ---------- ---------- --------------
WITH_ARCHIVELOG
---------------
         1 2016/06/16
2016/06/16                                                           34386 
     34441             0          0     453588 NO         NO
NO

1 row selected.

SQL> quit
Disconnected.

$ tbrmgr recover -o /home/tbrdb/work/6/backup/  
==================================================================
= Recovery Manager(RMGR) starts                                  =
=                                                                =
= TmaxData Corporation Copyright (c) 2008-. All rights reserved. =
==================================================================
=============================================
  RMGR - recovery
=============================================
Tibero instance terminated (ABNORMAL mode).

Control file #0 (/home/tbrdb/work/6/database/TB6/c1.ctl) is accessible
Listener port = 45648

Tibero 6

TmaxData Corporation Copyright (c) 2008-. All rights reserved.
Tibero instance started up (MOUNT mode).
DB Connected

RMGR BEGIN RESTORE
 full backup set_id: 1
 last incremental backup set_id: 1

Applying FULL BACKUP (set_id:1, ts_id:0, df_id:0)
 100.00% |=======================================>|  12800/12800  blks 0.00s
Synchronizing...
Applying FULL BACKUP (set_id:1, ts_id:1, df_id:1)
 100.00% |=======================================>|  25600/25600  blks 0.20s
Synchronizing...
Applying FULL BACKUP (set_id:1, ts_id:3, df_id:2)
 100.00% |=======================================>|  12800/12800  blks 0.00s
Synchronizing...
Applying FULL BACKUP (set_id:1, ts_id:4, df_id:3)
 100.00% |=======================================>|   1280/1280   blks 0.00s
Synchronizing...
Database restore succeeded
recoverSQL: ALTER DATABASE RECOVER AUTOMATIC
Database automatic recovery succeeded
DB disconnected

Tibero instance terminated (NORMAL mode).

Listener port = 45648

Tibero 6

TmaxData Corporation Copyright (c) 2008-. All rights reserved.
Tibero instance started up (NORMAL mode).
RMGR recovery ends


Online Full Backup과 Archive Log Backup을 이용한 Recovery 시나리오

RMGR은 Online Full Backup을 통해 생성된 Backup Set을 이용하여 Database Recovery를 수행할 수 있다. 아래 예제는 원본 Archive Log File이 유실된 경우로, with Archive Log(--with-archivelog) 옵션을 통해 Archive Log Backup을 Restore하는 경우에는 정상적으로 Recovery가 진행되지만, with Archive Log(--with-archivelog) 옵션을 적용하지 않고 Recovery를 수행하는 경우에는 Recovery에 실패하는 것을 확인할 수 있다.

[예 6.16] Online Full Backup과 Archive Log Backup을 이용한 Recovery 시나리오

$ tbsql sys/tibero

SQL> set line 200
SQL> col START_TIME for a20
SQL> col FINISH_TIME for a20
SQL> select * from V$BACKUP_SET a;

    SET_ID START_TIME
---------- ----------------------------------------------------------------
FINISH_TIME                                                       START_TSN
---------------------------------------------------------------- ----------
FINISH_TSN RESETLOGS_TSN   BASE_SET   SIZE(KB) IS_PARTIAL IS_INCREMENTAL
---------- ------------- ---------- ---------- ---------- --------------
WITH_ARCHIVELOG
---------------
         1 2016/06/16
2016/06/16                                                           34386 
     34441             0          0     453588 NO         NO
YES

1 row selected.

SQL> set line 200
SQL> col MIN_LOG_TIME for a20
SQL> col MAX_LOG_TIME for a20
SQL> col RESETLOG_TIME for a20
SQL> select * from V$BACKUP_ARCHIVED_LOG a;

    SET_ID MIN_LOG_TSN MAX_LOG_TSN MIN_LOG_TIME         MAX_LOG_TIME
---------- ----------- ----------- -------------------- --------------------
         1       34386       34441 2016/06/15           2016/06/16

MIN_LOG_SEQUENCE MAX_LOG_SEQUENCE RESETLOG_TSN RESETLOG_TIME
---------------- ---------------- ------------ --------------------
               2                2            0

1 row selected.

SQL> quit
Disconnected.

$ tbrmgr recover -o /home/tbrdb/work/6/backup/   
==================================================================
= Recovery Manager(RMGR) starts                                  =
=                                                                =
= TmaxData Corporation Copyright (c) 2008-. All rights reserved. =
==================================================================
=============================================
  RMGR - recovery
=============================================
Tibero instance terminated (ABNORMAL mode).

Control file #0 (/home/tbrdb/work/6/database/TB6/c1.ctl) is accessible
Listener port = 45648

Tibero 6

TmaxData Corporation Copyright (c) 2008-. All rights reserved.
Tibero instance started up (MOUNT mode).
DB Connected

RMGR BEGIN RESTORE
 full backup set_id: 1
 last incremental backup set_id: 1

Applying FULL BACKUP (set_id:1, ts_id:0, df_id:0)
 100.00% |=======================================>|  12800/12800  blks 0.00s
Synchronizing...
Applying FULL BACKUP (set_id:1, ts_id:1, df_id:1)
 100.00% |=======================================>|  25600/25600  blks 0.20s
Synchronizing...
Applying FULL BACKUP (set_id:1, ts_id:3, df_id:2)
 100.00% |=======================================>|  12800/12800  blks 0.00s
Synchronizing...
Applying FULL BACKUP (set_id:1, ts_id:4, df_id:3)
 100.00% |=======================================>|   1280/1280   blks 0.00s
Synchronizing...
Database restore succeeded
recoverSQL: ALTER DATABASE RECOVER AUTOMATIC
RMGR Error: recovery failed (automatic recovery failed)
SVR Error:  Unable to find archive log file for thread 0 from change 34428.


$ tbrmgr recover --with-archivelog -o /home/tbrdb/work/6/backup/  
==================================================================
= Recovery Manager(RMGR) starts                                  =
=                                                                =
= TmaxData Corporation Copyright (c) 2008-. All rights reserved. =
==================================================================
=============================================
  RMGR - recovery
=============================================
Tibero instance terminated (ABNORMAL mode).

Control file #0 (/home/tbrdb/work/6/database/TB6/c1.ctl) is accessible
Listener port = 45648

Tibero 6

TmaxData Corporation Copyright (c) 2008-. All rights reserved.
Tibero instance started up (MOUNT mode).
DB Connected

RMGR BEGIN RESTORE
 full backup set_id: 1
 last incremental backup set_id: 1

Applying FULL BACKUP (set_id:1, ts_id:0, df_id:0)
 100.00% |=======================================>|  12800/12800  blks 0.00s
Synchronizing...
Applying FULL BACKUP (set_id:1, ts_id:1, df_id:1)
 100.00% |=======================================>|  25600/25600  blks 0.20s
Synchronizing...
Applying FULL BACKUP (set_id:1, ts_id:3, df_id:2)
 100.00% |=======================================>|  12800/12800  blks 0.00s
Synchronizing...
Applying FULL BACKUP (set_id:1, ts_id:4, df_id:3)
 100.00% |=======================================>|   1280/1280   blks 0.00s
Synchronizing...
Database restore succeeded
recoverSQL: ALTER DATABASE RECOVER AUTOMATIC
Database automatic recovery succeeded
DB disconnected

Tibero instance terminated (NORMAL mode).

Listener port = 45648

Tibero 6

TmaxData Corporation Copyright (c) 2008-. All rights reserved.
Tibero instance started up (NORMAL mode).
RMGR recovery ends

Online Full Backup과 Incremental Backup을 이용한 Recovery 시나리오

RMGR은 Online Full Backup을 통해 생성된 Backup Set과 Incremental Backup을 통해 생성된 Backup Set을 자동으로 Merge하여 Recovery를 진행한다.

[예 6.17] Online Full Backup과 Incremental Backup을 이용한 Recovery 시나리오

$ tbsql sys/tibero

SQL> set line 200
SQL> col START_TIME for a20
SQL> col FINISH_TIME for a20
SQL> select * from V$BACKUP_SET a;

    SET_ID START_TIME
---------- ----------------------------------------------------------------
FINISH_TIME                                                       START_TSN
---------------------------------------------------------------- ----------
FINISH_TSN RESETLOGS_TSN   BASE_SET   SIZE(KB) IS_PARTIAL IS_INCREMENTAL
---------- ------------- ---------- ---------- ---------- --------------
WITH_ARCHIVELOG
---------------
         1 2016/06/16
2018/06/11                                                            34386
     34441             0          0     453588 NO         NO
YES

         2 2016/06/16
2018/06/11                                                            34448
     35234             0          1      23730 NO         YES
YES


2 rows selected.

2 rows selected.

SQL> set line 200
SQL> col MIN_LOG_TIME for a20
SQL> col MAX_LOG_TIME for a20
SQL> col RESETLOG_TIME for a20
SQL> select * from V$BACKUP_ARCHIVED_LOG a;

    SET_ID MIN_LOG_TSN MAX_LOG_TSN MIN_LOG_TIME         MAX_LOG_TIME
---------- ----------- ----------- -------------------- --------------------
         1       34386       34441 2016/06/16           2016/06/16
         2       34448       35234 2016/06/16           2016/06/16

MIN_LOG_SEQUENCE MAX_LOG_SEQUENCE RESETLOG_TSN RESETLOG_TIME
---------------- ---------------- ------------ --------------------
               2                2            0
               6                6            0

2 row selected.

SQL> quit
Disconnected.

$ tbrmgr recover --with-archivelog -o /home/tbrdb/work/6/backup
==================================================================
= Recovery Manager(RMGR) starts                                  =
=                                                                =
= TmaxData Corporation Copyright (c) 2008-. All rights reserved. =
==================================================================
=============================================
  RMGR - recovery
=============================================
Tibero instance terminated (ABNORMAL mode).

Control file #0 (/home/tbrdb/work/6/database/TB6/c1.ctl  ) is accessible
Listener port = 45648

Tibero 6

TmaxData Corporation Copyright (c) 2008-. All rights reserved.
Tibero instance started up (MOUNT mode).
DB Connected

RMGR BEGIN RESTORE
 full backup set_id: 1
 last incremental backup set_id: 2

Applying FULL BACKUP (set_id:1, ts_id:0, df_id:0)
 100.00% |=======================================>|  12800/12800  blks 0.00s
Synchronizing...
Applying FULL BACKUP (set_id:1, ts_id:1, df_id:1)
 100.00% |=======================================>|  25600/25600  blks 0.20s
Synchronizing...
Applying FULL BACKUP (set_id:1, ts_id:3, df_id:2)
 100.00% |=======================================>|  12800/12800  blks 0.00s
Synchronizing...
Applying FULL BACKUP (set_id:1, ts_id:4, df_id:3)
 100.00% |=======================================>|   1280/1280   blks 0.00s
Synchronizing...
Applying INCREMENTAL BACKUP (set_id:2, ts_id:0, df_id:0)
 100.00% |=======================================>|  12800/12800  blks 0.60s
Synchronizing...
Applying INCREMENTAL BACKUP (set_id:2, ts_id:1, df_id:1)
 100.00% |=======================================>|  25600/25600  blks 1.20s
Synchronizing...
Applying INCREMENTAL BACKUP (set_id:2, ts_id:3, df_id:2)
 100.00% |=======================================>|  12800/12800  blks 0.80s
Synchronizing...
Applying INCREMENTAL BACKUP (set_id:2, ts_id:4, df_id:3)
 100.00% |=======================================>|   1280/1280   blks 0.00s
Synchronizing...
Database restore succeeded
recoverSQL: ALTER DATABASE RECOVER AUTOMATIC
Database automatic recovery succeeded
DB disconnected

Tibero instance terminated (NORMAL mode).

Listener port = 45648

Tibero 6

TmaxData Corporation Copyright (c) 2008-. All rights reserved.
Tibero instance started up (NORMAL mode).
RMGR recovery ends


Tablespace 기반 Recovery 시나리오

RMGR은 사용자가 Tablespace Name으로 지정한(--tablespace 옵션) 특정 테이블 스페이스에 대해서만 Recovery를 수행할 수 있다. V$BACKUP_SET_TABLESPACE을 조회함으로써 각 Backup Set에 포함된 테이블 스페이스를 확인할 수 있다.

[예 6.18] Tablespace 기반 Recovery 시나리오

$ tbsql sys/tibero

SQL> set line 200
SQL> col NAME for a20
SQL> select * from V$TABLESPACE a;

       TS# NAME                 TYPE BIGFILE FLASHBACK_ON
---------- -------------------- ---- ------- ------------
         0 SYSTEM               DATA NO      NO
         1 UNDO                 UNDO NO      NO
         2 TEMP                 TEMP NO      NO
         3 USR                  DATA NO      NO
         4 SYSSUB               DATA NO      NO

5 rows selected.

SQL> select * from V$BACKUP_SET_TABLESPACE;

    SET_ID        TS#
---------- ----------
         1          0
         1          1
         1          3
         1          4

4 rows selected.

SQL> quit
Disconnected.

$ tbrmgr recover --tablespace USR -o /home/tbrdb/work/6/backup/  
==================================================================
= Recovery Manager(RMGR) starts                                  =
=                                                                =
= TmaxData Corporation Copyright (c) 2008-. All rights reserved. =
==================================================================
=============================================
RMGR - recovery
=============================================
Tibero instance terminated (ABNORMAL mode).

Control file #0 (/home/tbrdb/work/6/database/TB6/c1.ctl) is accessible
Listener port = 45648

Tibero 6

TmaxData Corporation Copyright (c) 2008-. All rights reserved.
Tibero instance started up (MOUNT mode).
DB Connected

RMGR BEGIN RESTORE
 full backup set_id: 1
 last incremental backup set_id: 1

Applying FULL BACKUP (set_id:1, ts_id:3, df_id:2)
 100.00% |=======================================>|  12800/12800  blks 0.00s
Synchronizing...
Database restore succeeded
recoverSQL: ALTER DATABASE RECOVER AUTOMATIC
Database automatic recovery succeeded
DB disconnected

Tibero instance terminated (NORMAL mode).

Listener port = 45648

Tibero 6

TmaxData Corporation Copyright (c) 2008-. All rights reserved.
Tibero instance started up (NORMAL mode).
RMGR recovery ends


6.4.4. 복구 관리자를 이용한 백업 삭제 예제

본 절에서는 다음의 백업 삭제 시나리오를 통해서 RMGR을 이용한 백업 삭제를 설명한다.

RMGR을 이용하여 Backup Set을 삭제하는 경우, 삭제 대상이 되는 Target Backup Set은 두 가지 방식으로 지정할 수 있다. 첫 번째로 Backup Set ID(--backup_set 옵션)를 명시하여 해당 Backup Set만을 삭제할 수 있으며, 두 번째로 Backup Date(--beforetime 옵션)를 명시하여 명시한 Backup Date 이전에 Backup이 이루어진 모든 Backup Set들을 삭제할 수 있다.

RMGR은 Controlfile을 참조하여 삭제 대상으로 지정된 Backup Set의 존재 유무와 백업 경로를 확인한 후 삭제를 진행한다. 따라서 Controlfile에서 참조할 수 없는 Backup Set은 RMGR을 이용하여 삭제할 수 없으며, Backup Set이 존재하는 백업 경로가 Backup할 때 Controlfile에 등록된 백업 경로와 다른 경우에는 Backup Dest(-o 옵션)를 직접 명시해주어야 변경된 백업 경로에서 실제 백업된 파일에 대한 삭제를 진행할 수 있다. Controlfile에 등록되어 있는 Backup Set 정보는 V$BACKUP_SET을 통해 조회할 수 있으며, 각 Backup Set에 속하는 Archive Log정보는 V$BACKUP_ARCHIVED_LOG를 통해 조회할 수 있다.

참고

Controlfile에 등록된 Backup Set을 사용자가 수동으로 삭제하였거나, 잘못된 백업 경로를 명시하여 백업 경로에서 삭제 대상으로 지정된 Backup Set을 찾을 수 없는 경우에는 Controlfile에 등록된 Backup Set Entry만을 삭제하고 종료한다. 또한 테이프 장비에 저장된 경우 역시 Controlfile에 등록된 Backup Set Entry만을 삭제하고 종료한다.

Backup Set ID에 기반한 백업 삭제 시나리오

RMGR은 사용자가 Backup Set ID로 지정한(--backup_set 옵션) 특정 Backup Set만을 선택적으로 삭제할 수 있다.

다음 예제에서는 RMGR을 이용하여 Backup Set ID = 1에 해당하는 Backup Set을 삭제한다.

[예 6.19] Backup Set ID에 기반한 백업 삭제 시나리오

$ tbsql sys/tibero

SQL> set line 200
SQL> col START_TIME for a20
SQL> col FINISH_TIME for a20
SQL> select * from V$BACKUP_SET a;

    SET_ID START_TIME
---------- ----------------------------------------------------------------
FINISH_TIME                                                       START_TSN
---------------------------------------------------------------- ----------
FINISH_TSN RESETLOGS_TSN   BASE_SET   SIZE(KB) IS_PARTIAL IS_INCREMENTAL
---------- ------------- ---------- ---------- ---------- --------------
WITH_ARCHIVELOG
---------------
         1 2018/06/11
2018/06/11                                                            37093
     37109             0          0     453588 NO         NO
YES

         2 2018/06/11
2018/06/11                                                            37361
     37377             0          0     453588 NO         NO
YES

         3 2018/06/11
2018/06/11                                                            37390
     37406             0          0     453588 NO         NO
YES


3 rows selected.

SQL> quit
Disconnected.

$ tbrmgr delete --backup_set 1 -o /home/tbrdb/work/6/backup
==================================================================
= Recovery Manager(RMGR) starts                                  =
=                                                                =
= TmaxData Corporation Copyright (c) 2008-. All rights reserved. =
==================================================================
=============================================
  RMGR - delete
=============================================
DB connected
 #1 of #3 backup sets erased
RMGR delete ends

$ tbsql sys/tibero

SQL> set line 200
SQL> col START_TIME for a20
SQL> col FINISH_TIME for a20
SQL> select * from V$BACKUP_SET a;

    SET_ID START_TIME
---------- ----------------------------------------------------------------
FINISH_TIME                                                       START_TSN
---------------------------------------------------------------- ----------
FINISH_TSN RESETLOGS_TSN   BASE_SET   SIZE(KB) IS_PARTIAL IS_INCREMENTAL
---------- ------------- ---------- ---------- ---------- --------------
WITH_ARCHIVELOG
---------------
         2 2018/06/11
2018/06/11                                                            37361
     37377             0          0     453588 NO         NO
YES

         3 2018/06/11
2018/06/11                                                            37390
     37406             0          0     453588 NO         NO
YES


2 rows selected.


Backup Date에 기반한 백업 삭제 시나리오

RMGR은 사용자가 Backup Date로 지정한(--beforetime 옵션) 시간 이전에 생성된 모든 Backup Set을 삭제할 수 있다.

다음 예제에서는 RMGR을 이용하여 "2016년 06월 17일 12시" 이전에 생성된 모든 Backup Set을 삭제한다. Backup Date는 YYYYMMDDHH(24)mmss 형태로 명시한다.

[예 6.20] Backup Date에 기반한 백업 삭제 시나리오 ()

$ tbsql sys/tibero

SQL> set line 200
SQL> col START_TIME for a20
SQL> col FINISH_TIME for a20
SQL> select * from V$BACKUP_SET a;

    SET_ID START_TIME
---------- ----------------------------------------------------------------
FINISH_TIME                                                       START_TSN
---------------------------------------------------------------- ----------
FINISH_TSN RESETLOGS_TSN   BASE_SET   SIZE(KB) IS_PARTIAL IS_INCREMENTAL
---------- ------------- ---------- ---------- ---------- --------------
WITH_ARCHIVELOG
---------------
         2 2018/06/11
2018/06/11                                                            37361
     37377             0          0     453588 NO         NO
YES

         3 2018/06/11
2018/06/11                                                            37390
     37406             0          0     453588 NO         NO
YES

2 rows selected.

SQL> quit
Disconnected.

$ tbrmgr delete --beforetime 20180612120000 -o /home/tbrdb/work/6/backup/  
==================================================================
= Recovery Manager(RMGR) starts                                  =
=                                                                =
= TmaxData Corporation Copyright (c) 2008-. All rights reserved. =
==================================================================
=============================================
  RMGR - delete
=============================================
DB connected
 #2 of #2 backup sets erased
RMGR delete ends

$ tbsql sys/tibero

SQL> set line 200
SQL> col START_TIME for a20
SQL> col FINISH_TIME for a20
SQL> select * from V$BACKUP_SET a;

0 rows selected.