콘텐츠로 이동

6. Altibase Backup Manager(abm)#

개요#

abm은 Altibase 데이터베이스의 물리적 백업을 지원하는 유틸리티로, 백업 프로세스를 효율적으로 수행하고 백업 파일을 안전하게 관리할 수 있도록 설계되었다. abm 유틸리티는 리눅스 환경에서만 지원되며, $ALTIBASE_HOME/bin 디렉토리에 위치한다.

주요 특징#

  • 높은 보안성

abm은 국제적으로 검증된 암호 알고리즘과 보안 모듈을 기반으로 데이터 보호 기능을 제공한다. 백업 데이터의 기밀성과 무결성을 확보하기 위해 3GPP에서 승인한 암호화 표준을 우선 적용하며, 해당 표준이 적용되지 않는 경우에는 NCSC(UK) 및 NIST(US)의 암호 기술 가이드라인을 준수한다.

  • 효율성

직관적인 인터페이스를 통해 백업 수행은 물론, 백업 파일의 압축, 암호화 및 복호화 기능을 제공한다.

주요 기능#

  • 백업 준비 설정
  • 온라인 백업 가능 여부 확인

  • Change Tracking 기능 활성화

  • 증분 백업 디렉토리의 설정

  • 데이터베이스 백업

  • 증분 백업

  • 전체 데이터베이스 백업
  • 아카이브 로그 백업

  • 일반 디렉토리 백업 및 암호화

  • 백업 파일의 복호화 및 압축해제

지원하지 않는 기능#

abm은 데이터베이스의 백업을 도와주는 도구로, 데이터베이스의 복원 및 복구는 진행하지 않는다. 따라서, 데이터베이스의 복원 및 복구는 Administrator's Manual > 10. 백업 및 복구 및 11.증분 백업과 복구 를 참고하여 진행해야 한다.

주의 사항#

  • abm은 SYSDBA로 접속하므로, 실행 시 SYSDBA의 비밀번호를 입력해야 한다. 또한, 비밀번호를 입력하지 않고, 암호화된 비밀번호 파일을 이용하여 실행할 수도 있다.

  • abm은 백업 디렉토리에 직접 접근하여 동작하므로, Altibase 서버가 설치된 장비에서 실행해야 한다.

  • 비밀번호를 이용한 백업을 한 경우, 해당 비밀 번호를 분실하면 백업 데이터의 복구가 불가능하다.

  • 백업할 디렉토리는 사전에 생성해두어야 한다.


시스템 요구사항#

abm은 Linux 64bit 환경에서만 구동되며, 필수적으로 libacl 라이브러리가 필요하다.

  • 운영체제: Linux 64bit
  • 필수 라이브러리: libacl (대부분의 배포판에 기본 포함)

  • 환경 변수: LD_LIBRARY_PATH에 libacl.so.1 이 위치한 경로가 포함되어야 한다.

Note

대부분의 리눅스 배포판에는 libacl이 기본 설치되어 있으나, 아래 명령어를 통해 링크 상태를 미리 확인하는 것을 권장한다.

% ldd abm | grep libacl
libacl.so.1 => /lib64/libacl.so.1 (0x0000003b3ae00000)

실행 옵션#

옵션 설명#

옵션 설명
-p password SYSDBA 사용자 비밀번호를 직접 지정한다.
-pf password_file iSQL에서 STORE PASSWORD TO 'file_path'구문으로 생성한 암호화된 비밀번호 파일이 있는 경우, 해당 파일 경로를 지정한다.

예시:

abm -p myPassword
abm -pf /home/dba/abm_pass.enc

백업 준비#

온라인 백업 가능 여부 확인#

구문#

SHOW BACKUP INFO;

온라인 백업 가능 여부를 확인하는 명령어로, 온라인 백업이 가능한 상태인지를 확인할 수 있다. Archivelog Mode, Change Tracking Manager state, Incremental Backup Directory의 정보를 보여준다.

[!TIP]

  • 전체 백업을 수행하기 위해서는 Archivelog Mode가 1인지 확인한다.
  • 증분 백업을 수행하기 위해서는 Archivelog Mode와 Change Tracking Manager state가 모두 1이고, Incremental Backup Directory가 설정되어 있는지 확인한다.

예제#

abm(sysdba)> SHOW BACKUP INFO;
Archivelog Mode: [1] 
Change Tracking Manager state: [1]
Incremental Backup Directory: [/home/altibase/backup/]

아카이브 로그 모드 설정#

SHOW BACKUP INFO 명령으로 Archivelog Mode가 1인지 확인한다. 온라인 백업을 위해서는 반드시 아카이브 로그 모드가 활성화 되어 있어야 한다. 아카이브 로그 모드의 설정은 iSQL을 이용해서 수행해야 한다.

Note

아카이브 로그 모드가 0인 경우, iSQL을 이용해서 control 구동 단계에서 아래의 명령으로 변경할 수 있다.

% isql -silent -u sys -p manager -sysdba
Connected to idle instance.
iSQL(sysdba)> startup control;
Connecting to the DB server.... Connected.


TRANSITION TO PHASE : PROCESS


TRANSITION TO PHASE : CONTROL
Command executed successfully.
iSQL(sysdba)> alter database archivelog;
Alter success.

페이지 변경 추적 기능 활성화#

증분 백업을 수행하려면 SHOW BACKUP INFO 명령으로 Change Tracking Manager state가 1인지 확인한다. 만약 Change Tracking Manager state의 상태가 0이라면 abm에서 아래의 구문을 이용하여 1로 변경할 수 있다.

구문#

{ENABLE | DISABLE} INCREMENTAL CHUNK CHANGE TRACKING;
  • ENABLE INCREMENTAL CHUNK CHANGE TRACKING: Change Tracking 기능을 활성화하는 명령어이다.
  • DISABLE INCREMENTAL CHUNK CHANGE TRACKING: Change Tracking 기능을 비활성화하는 명령어이다.

예제#

abm(sysdba)> ENABLE INCREMENTAL CHUNK CHANGE TRACKING;
[Server]
 Command: ALTER DATABASE ENABLE INCREMENTAL CHUNK CHANGE TRACKING;
 elapsed time : 1.25 sec.
Successfully executed change chunk tracking

증분 백업 파일 저장 디렉토리 설정#

SHOW BACKUP INFO 명령으로 Incremental Backup Directory 설정 여부를 확인할 수 있다. 이 디렉토리가 공란일 경우, abm에서 아래의 구문을 사용하여 증분 백업 파일을 저장할 디렉토리를 지정해야 한다.

구문#

CHANGE BACKUP DIRECTORY 'backup_dir';
  • backup_dir : 증분 백업 파일을 저장할 디렉토리를 지정한다. 해당 디렉토리는 미리 생성되어 있어야 한다.

예제#

abm(sysdba)> CHANGE BACKUP DIRECTORY '/home/altibase/inc_backup_dir';

Note

존재하지 않는 디렉토리를 지정할 경우, 아래의 오류가 나타난다. [ERR-11077 : Directory path not found (/data/jinkim/work/btest_jin0).] Failed to execute change backup directory

백업#

데이터베이스 백업#

증분 백업(Incremental Backup)#

abm 명령어를 이용하여 증분 백업을 수행하려면 아래의 구문을 참고 한다. 증분 백업을 위해서는 증분 백업 디렉토리가 지정되었는지 사전에 확인하고 진행한다.

Note

증분 백업이란 마지막으로 증분 백업이 수행된 이후부터 데이터 파일에서 변경된 데이터 페이지만 백업하는 방식으로 크게 레벨 0, 레벨 1 두 가지로 분류된다. 레벨 0(Level 0) 증분 백업은 데이터 파일의 모든 페이지들을 백업하며 레벨 1 백업인 차등 증분 백업, 누적 증분 백업의 기준점이 된다. Altibase 증분 백업 (Incremental Backup)에 대한 상세 내용은 Administrator's Manual 증분 백업과 복구를 참조한다.

구문#
BACKUP INCREMENTAL LEVEL level DATABASE [WITH TAG 'tag_name'] TO FILE 'backup_filename' [WITH PASSWORD 'user_password'] [DELETE INPUT];
  • level : 증분 백업의 레벨을 지정한다.
  • WITH TAG : 백업 태그를 지정하는 구문이다.

  • tag_name : 백업 태그명을 입력한다.

  • backup_filename : 생성할 백업 파일의 이름을 전체 경로와 함께 지정한다.
  • 예) '/home/backup_dir/backup_level0.abk'

  • WITH PASSWORD : 사용자 비밀번호를 이용하여 압축 파일을 암호화 하기 위해 사용하는 구문이다. 비밀번호를 분실할 경우 복구가 불가능하므로 주의해야 한다.

  • user_password : 사용자 비밀번호를 입력한다.

  • DELETE INPUT : 백업 작업이 정상적으로 완료된 후, 백업 과정에서 생성된 임시 데이터(원본 백업 파일)를 자동으로 삭제하는 옵션이다. 이 옵션을 지정하지 않으면 해당 파일들은 삭제되지 않으며, 사용자가 직접 Incremental Backup Directory 하위의 'TAG_' 디렉토리에서 삭제해야 한다.
예제#
  • 레벨 0 증분 백업
abm(sysdba)> BACKUP INCREMENTAL LEVEL 0 DATABASE WITH TAG 'MON' TO FILE '/home/backup_dir/backup_level0.abk'  WITH PASSWORD 'UserPassword' DELETE INPUT;
[Server]
 Command: ALTER DATABASE BACKUP INCREMENTAL LEVEL 0  DATABASE WITH TAG 'MON'
 elapsed time : 8.61 sec.
[ABM] COMPRESS & ENCRYPT
 Archiving '/home/altibase/inc_backup_dir/TAG_MON' (basename: 'TAG_MON')
 1. TAG_MON (size: 4096 bytes, type: dir)
 2. TAG_MON/loganchor2 (size: 7608 bytes, type: file)
 3. TAG_MON/undo001.dbf_TAG_MON.ibak (size: 135274496 bytes, type: file)
 4. TAG_MON/system001.dbf_TAG_MON.ibak (size: 104865792 bytes, type: file)
 5. TAG_MON/loganchor0 (size: 7608 bytes, type: file)
 6. TAG_MON/SYS_TBS_MEM_DIC-0-0_TAG_MON.ibak (size: 4595712 bytes, type: file)
 7. TAG_MON/loganchor1 (size: 7608 bytes, type: file)
 8. TAG_MON/backupinfo (size: 11648 bytes, type: file)
 9. TAG_MON/SYS_TBS_MEM_DATA-0-0_TAG_MON.ibak (size: 4235264 bytes, type: file)

 Archiving completed to '/home/backup_dir/backup_level0.abk'
 ========================================
   Total Size:    0.23 GB
   Files:         8
   Directories:   1
   Time:          2 seconds
   Avg Speed:     118.74 MB/s
 =================================================
[ABM] DELETE INPUT
 Deleted 8 file(s) at /home/altibase/inc_backup_dir/TAG_MON including directory itself.
Successfully executed incremental backup
  • 레벨 1 증분 백업
abm(sysdba)> BACKUP INCREMENTAL LEVEL 1 DATABASE WITH TAG 'MON2' TO FILE '/home/backup_dir/backup_level1.abk'  WITH PASSWORD 'UserPassword' DELETE INPUT;
[Server]
 Command: ALTER DATABASE BACKUP INCREMENTAL LEVEL 1  DATABASE WITH TAG 'MON2'
 elapsed time : 6.22 sec.
[ABM] COMPRESS & ENCRYPT
 Archiving '/home/altibase/inc_backup_dir/TAG_MON2' (basename: 'TAG_MON2')
 1. TAG_MON2 (size: 4096 bytes, type: dir)
 2. TAG_MON2/undo001.dbf_TAG_MON2.ibak (size: 736 bytes, type: file)
 3. TAG_MON2/SYS_TBS_MEM_DATA-0-0_TAG_MON2.ibak (size: 728 bytes, type: file)
 4. TAG_MON2/loganchor2 (size: 7608 bytes, type: file)
 5. TAG_MON2/system001.dbf_TAG_MON2.ibak (size: 736 bytes, type: file)
 6. TAG_MON2/loganchor0 (size: 7608 bytes, type: file)
 7. TAG_MON2/loganchor1 (size: 7608 bytes, type: file)
 8. TAG_MON2/SYS_TBS_MEM_DIC-0-0_TAG_MON2.ibak (size: 728 bytes, type: file)
 9. TAG_MON2/backupinfo (size: 14432 bytes, type: file)

 Archiving completed to '/home/backup_dir/backup_level1.abk'
 ========================================
   Total Size:    0.00 GB
   Files:         8
   Directories:   1
   Time:          0 seconds
   Avg Speed:     0.00 MB/s
 =================================================
[ABM] DELETE INPUT
 Deleted 8 file(s) at /home/altibase/inc_backup_dir/TAG_MON2 including directory itself.
Successfully executed incremental backup

전체 데이터베이스 백업(Full Backup)#

abm 명령어를 이용하여 전체 데이터베이스 백업을 수행하려면 아래 구문을 참고한다.

구문#
BACKUP DATABASE TO 'backup_dir' TO FILE 'backup_filename' [WITH PASSWORD 'user_password'] [DELETE INPUT];
  • backup_dir : abm에서 전체 데이터베이스 백업을 수행할 때 작업이 진행될 디렉토리 경로를 지정한다. 이 디렉토리는 abm에서 전체 데이터베이스 백업을 수행할 때, 백업 파일을 수집, 저장한 후 압축 및 암호화를 진행할 작업 디렉토리를 말한다. DELETE INPUT 옵션을 지정하면, 백업 완료 후 이 디렉토리의 파일이 자동 삭제된다. 이 옵션을 지정하지 않으면 사용자가 직접 정리 해야 한다.
  • backup_filename : 압축 및 암호화가 완료된 최종 백업 파일의 이름을 전체 경로와 함께 지정한다.
  • 예)'/home/backup_dir/fullbackup.abk'

  • WITH PASSWORD : 사용자 비밀번호를 이용하여 압축 파일을 암호화 하기 위해 사용하는 구문이다. 비밀번호를 분실할 경우 복구가 불가능하므로 주의해야 한다.

  • user_password : 사용자 비밀번호를 입력한다.
  • DELETE INPUT : DELETE INPUT 구문을 사용하면, 데이터베이스가 백업된 경로(backup_dir)에 백업된 파일들이 백업 완료 후 자동 삭제된다.
예제#
  • 전체 데이터베이스 백업
abm(sysdba)> backup database to '/data/jinkim/work/fullbackup_dir' to file 'fullbackup2.abk' WITH PASSWORD 'abc' DELETE INPUT;
[Server]
 Command: ALTER DATABASE backup database to '/data/jinkim/work/fullbackup_dir';
 elapsed time : 8.47 sec.
[ABM] COMPRESS & ENCRYPT
 Archiving '/data/jinkim/work/fullbackup_dir' (basename: 'fullbackup_dir')
 1. fullbackup_dir (size: 4096 bytes, type: dir)
 2. fullbackup_dir/undo001.dbf (size: 135274496 bytes, type: file)
 3. fullbackup_dir/loganchor2 (size: 7600 bytes, type: file)
 4. fullbackup_dir/system001.dbf (size: 104865792 bytes, type: file)
 5. fullbackup_dir/SYS_TBS_MEM_DATA-1-0 (size: 4235264 bytes, type: file)
 6. fullbackup_dir/loganchor0 (size: 7600 bytes, type: file)
 7. fullbackup_dir/SYS_TBS_MEM_DIC-1-0 (size: 4628480 bytes, type: file)
 8. fullbackup_dir/loganchor1 (size: 7600 bytes, type: file)

 Archiving completed to '/data/jinkim/fullbackup2.abk'
 ========================================
   Total Size:    0.23 GB
   Files:         7
   Directories:   1
   Time:          2 seconds
   Avg Speed:     118.75 MB/s
 =================================================
[ABM] DELETE INPUT
 Deleted 7 file(s) at /data/jinkim/work/fullbackup_dir including directory itself.
Successfully executed backup full database

아카이브 로그 백업#

아카이브 로그 파일은 커밋된 트랜잭션의 변경 내용을 기록한 리두 로그(redo log)의 백업본으로, 데이터베이스를 특정 시점으로 복구할 때 필요한 파일이다.

abm 명령어로 아카이브 로그 백업을 수행하려면 아래 구문을 참고한다.

구문#
BACKUP ARCHIVELOG ALL TO FILE 'archive_backup_filename' [WITH PASSWORD 'user_password'] [DELETE INPUT];
  • archive_backup_filename : 아카이브 로그 백업 파일의 이름을 경로를 포함하여 지정한다. 예) '/home/backup_dir/achivelog_bakcup.abk'. 해당 백업 파일은 altibase.properties의 ARCHIVE_DIR에 설정된 아카이브 로그 디렉토리에 존재하는 모든 아카이브 로그 파일을 수집하여 하나의 압축파일로 생성한다.
  • WITH PASSWORD : 사용자 비밀번호를 이용하여 압축 파일을 암호화 하기 위해 사용하는 구문이다. 비밀번호를 분실할 경우 복구가 불가능하므로 주의해야 한다.
  • user_password : 사용자 비밀번호를 입력한다.
  • DELETE INPUT : DELETE INPUT 구문을 사용할 경우, 백업 수행 이후 ARCHIVE_DIR 디렉토리의 모든 아카이브 로그 파일을 삭제한다.
예제#
abm(sysdba)> BACKUP ARCHIVELOG ALL TO FILE '/home/backup_dir/achivelog_bakcup.abk' WITH PASSWORD 'abc' DELETE INPUT;
[ABM] COMPRESS & ENCRYPT
 Archiving '/home/altibase_home/arch_logs' (basename: 'arch_logs')
 1. arch_logs (size: 4096 bytes, type: dir)
 2. arch_logs/logfile5 (size: 104857600 bytes, type: file)
 3. arch_logs/logfile6 (size: 104857600 bytes, type: file)

 Archiving completed to '/home/backup_dir/achivelog_bakcup.abk'
 ========================================
   Total Size:    0.20 GB
   Files:         2
   Directories:   1
   Time:          1 seconds
   Avg Speed:     200.00 MB/s
 =================================================
[ABM] DELETE INPUT
 Deleted 2 file(s) at /home/altibase_home/arch_logs.
Successfully executed backup archivelog

일반디렉토리 백업 및 암호화#

abm 명령어를 이용하여 특정 디렉토리를 압축 및 암호화할 수 있다.

구문#

BACKUP DIRECTORY 'backup_dir' TO FILE 'backup_filename' [WITH PASSWORD 'user_password'];
  • backup_dir : 백업할 디렉토리의 경로를 입력한다.
  • backup_filename : 백업파일의 이름을 경로와 함께 입력한다. 예) '/backup2/nopassword.tar.gz'
  • WITH PASSWORD : 사용자 비밀번호를 이용하여 압축 파일을 암호화 하기 위해 사용하는 구문이다. 비밀번호를 분실할 경우 복구가 불가능하므로 주의해야 한다.
  • user_password : 사용자 비밀번호를 입력한다.

예제#

디렉토리 압축#
BACKUP DIRECTORY '/db_home/logs' TO FILE '/backup2/nopassword.tar.gz';
  • 지정한 디렉토리의 파일들을 하나의 tar 파일로 묶고 gzip으로 압축한다.
비밀번호를 이용한 디렉토리 압축#
BACKUP DIRECTORY '/db_home/logs' TO FILE '/backup2/nopassword.tar.gz'
 [WITH PASSWORD 'UserPassword'];
  • WITH PASSWORD 키워드와 사용자 비밀번호를 이용하여 압축 파일을 암호화 한다.

백업의 복호화 및 압축해제#

abm 명령어를 이용하여 백업 파일의 복호화 및 압축을 해제하려면, 아래 구문을 참고 한다.

구문#

RESTORE ARCHIVE 'backup_filename' TO DIRECTORY 'backup_dir' [WITH PASSWORD 'user_password'];
  • backup_filename : 압축 해제 할 백업 파일의 이름과 경로를 입력한다. 예) '/backup2/nopassword.tar.gz'
  • backup_dir : 압축 해제할 디렉토리의 경로를 입력한다.
  • WITH PASSWORD : 사용자 비밀번호를 이용하여 압축한 파일일 경우, 해당 비밀번호로만 복호화할 수 있다. 비밀번호를 분실한 경우 복구가 불가능하다.
  • user_password : 사용자 비밀번호를 입력한다.

예제#

  • WITH PASSWORD 옵션을 사용한 전체 데이터베이스 백업파일의 복호화 및 압축해제
abm(sysdba)> restore archive 'fullbackup2.abk' to directory '/data/jinkim/work/test' with password 'abc';
[ABM] DECRYPT & DECOMPRESS
 Encrypted file detected: /data/jinkim/fullbackup2.abk
 Decryption processing started
 Extracking to: /data/jinkim/work/fullbackup_dir
 1. fullbackup_dir/ (size: 0 bytes, type: dir)
 2. fullbackup_dir/undo001.dbf (size: 135274496 bytes, type: file)
 3. fullbackup_dir/loganchor2 (size: 7600 bytes, type: file)
 4. fullbackup_dir/system001.dbf (size: 104865792 bytes, type: file)
 5. fullbackup_dir/SYS_TBS_MEM_DATA-1-0 (size: 4235264 bytes, type: file)
 6. fullbackup_dir/loganchor0 (size: 7600 bytes, type: file)
 7. fullbackup_dir/SYS_TBS_MEM_DIC-1-0 (size: 4628480 bytes, type: file)
 8. fullbackup_dir/loganchor1 (size: 7600 bytes, type: file)
 ========================================
    Total Size:    0.23 GB
    Files:         7
    Directories:   1
    Time:          1 seconds
    Avg Speed:     237.49 MB/s
 =================================================
Successfully executed restore archive

Note

백업 파일의 압축 해제 후 데이터베이스의 복구는 iSQL로 진행해야 한다. 데이터베이스의 복원 및 복구는 Administrator's Manual > 10. 백업 및 복구 또는 Administrator's Manual > 11. 중분 백업과 복구를 참고하여 진행한다.

abm을 이용한 백업 예제#

abm은 데이터베이스의 백업을 도와주는 도구로, 데이터베이스의 복원 및 복구는 진행하지 않는다. 따라서, 데이터베이스의 복원 및 복구는 iSQL을 이용해야 한다. 아래는 abm을 이용한 백업 절차 및 예제만 보여준다.

전체 데이터베이스 백업 및 복구#

abm을 이용한 백업#

## STEP 1: 온라인 백업 가능 여부 확인 
abm(sysdba)> SHOW BACKUP INFO;
Archivelog Mode              : [1]
Change Tracking Manager State: [0]
Incremental Backup Directory : []
Successfully executed show bakcup info

## STEP 2: 전체 데이터베이스 백업
abm(sysdba)> backup database to '/data/jinkim/work/fullbackup_dir' to file 'fullbackup.abk' with password 'abc'
[Server]
 Command: ALTER DATABASE backup database to '/data/jinkim/work/fullbackup_dir'
 elapsed time : 8.40 sec.
[ABM] COMPRESS & ENCRYPT
 Archiving '/data/jinkim/work/fullbackup_dir' (basename: 'fullbackup_dir')
 1. fullbackup_dir (size: 4096 bytes, type: dir)
 2. fullbackup_dir/undo001.dbf (size: 135274496 bytes, type: file)
 3. fullbackup_dir/fullbackup.abk (size: 184320 bytes, type: file)
 4. fullbackup_dir/loganchor2 (size: 7600 bytes, type: file)
 5. fullbackup_dir/system001.dbf (size: 104865792 bytes, type: file)
 6. fullbackup_dir/loganchor0 (size: 7600 bytes, type: file)
 7. fullbackup_dir/SYS_TBS_MEM_DIC-0-0 (size: 4628480 bytes, type: file)
 8. fullbackup_dir/SYS_TBS_MEM_DATA-0-0 (size: 4235264 bytes, type: file)
 9. fullbackup_dir/loganchor1 (size: 7600 bytes, type: file)

 Archiving completed to '/data/jinkim/work/fullbackup_dir/fullbackup.abk'
 ========================================
   Total Size:    0.23 GB
   Files:         8
   Directories:   1
   Time:          1 seconds
   Avg Speed:     237.67 MB/s
 =================================================
Successfully executed backup full database

## STEP 3: 백업 파일의 압축 해제
abm(sysdba)> restore archive 'fullbackup.abk' to directory '/data/jinkim/work/fullbackup_dir2' with password 'abc';
[ABM] DECRYPT & DECOMPRESS
 Plain tar.gz file detected: /data/jinkim/work/fullbackup_dir/fullbackup.abk
 Extracking to: /data/jinkim/work/fullbackup_dir2
 1. fullbackup_dir/ (size: 0 bytes, type: dir)
 2. fullbackup_dir/undo001.dbf (size: 135274496 bytes, type: file)
 3. fullbackup_dir/fullbackup.abk (size: 184320 bytes, type: file)
 4. fullbackup_dir/loganchor2 (size: 7600 bytes, type: file)
 5. fullbackup_dir/system001.dbf (size: 104865792 bytes, type: file)
 6. fullbackup_dir/loganchor0 (size: 7600 bytes, type: file)
 7. fullbackup_dir/SYS_TBS_MEM_DIC-0-0 (size: 4628480 bytes, type: file)
 8. fullbackup_dir/SYS_TBS_MEM_DATA-0-0 (size: 4235264 bytes, type: file)
 9. fullbackup_dir/loganchor1 (size: 7600 bytes, type: file)
 ========================================
    Total Size:    0.23 GB
    Files:         8
    Directories:   1
    Time:          1 seconds
    Avg Speed:     237.67 MB/s
 =================================================
Successfully executed restore archive
abm(sysdba)> exit

위 시나리오에서 /data/jinkim/work/fullbackup_dir2 경로의 fullbackup_dir디렉토리에서 압축해제된 백업 파일의 목록을 확인할 수 있다. 이 파일들을 이용하여 iSQL을 이용한 복구를 진행한다.

iSQL을 이용한 복구#

복구는 iSQL을 이용해야 한다. 전체 데이터베이스의 복구는 Administrator's Manual > 10. 백업 및 복구를 참고하여 진행해야 한다.

증분 백업 및 복구#

abm을 이용한 백업#

## STEP 1: 온라인 백업 가능 여부 확인
abm(sysdba)> show backup info
Archivelog Mode              : [1]
Change Tracking Manager State: [0]
Incremental Backup Directory : []
Successfully executed show bakcup info

## STEP 2: 페이지 변경 추적 기능 활성화
abm(sysdba)> ENABLE INCREMENTAL CHUNK CHANGE TRACKING;
[Server]
 Command: ALTER DATABASE ENABLE INCREMENTAL CHUNK CHANGE TRACKING;
sh elapsed time : 1.11 sec.
Successfully executed change chunk tracking
abm(sysdba)> show backup info;
Archivelog Mode              : [1]
Change Tracking Manager State: [1]
Incremental Backup Directory : []
Successfully executed show bakcup info

## STEP 3: 증분 백업 디렉토리 지정
abm(sysdba)> CHANGE BACKUP DIRECTORY '/data/jinkim/work/inc_backup_dir';
[Server]
 Command: ALTER DATABASE CHANGE BACKUP DIRECTORY '/data/jinkim/work/inc_backup_dir';
 elapsed time : 0.09 sec.
Successfully executed change backup directory
abm(sysdba)> show backup info
Archivelog Mode              : [1]
Change Tracking Manager State: [1]
Incremental Backup Directory : [/data/jinkim/work/inc_backup_dir/]
Successfully executed show bakcup info

## STEP4: level 0 백업 
abm(sysdba)> BACKUP INCREMENTAL LEVEL 0 DATABASE WITH TAG 'MON' TO FILE '/data/jinkim/work/inc_backup_dir/incre_level0_mon.abk' WITH PASSWORD 'ba                 ckuptest' DELETE INPUT;
[Server]
 Command: ALTER DATABASE BACKUP INCREMENTAL LEVEL 0  DATABASE WITH TAG 'MON'
 elapsed time : 9.35 sec.
[ABM] COMPRESS & ENCRYPT
 Archiving '/data/jinkim/work/inc_backup_dir/TAG_MON' (basename: 'TAG_MON')
 1. TAG_MON (size: 4096 bytes, type: dir)
 2. TAG_MON/loganchor2 (size: 7600 bytes, type: file)
 3. TAG_MON/undo001.dbf_TAG_MON.ibak (size: 135274496 bytes, type: file)
 4. TAG_MON/system001.dbf_TAG_MON.ibak (size: 104865792 bytes, type: file)
 5. TAG_MON/loganchor0 (size: 7600 bytes, type: file)
 6. TAG_MON/SYS_TBS_MEM_DIC-0-0_TAG_MON.ibak (size: 4595712 bytes, type: file)
 7. TAG_MON/loganchor1 (size: 7600 bytes, type: file)
 8. TAG_MON/backupinfo (size: 3296 bytes, type: file)
 9. TAG_MON/SYS_TBS_MEM_DATA-0-0_TAG_MON.ibak (size: 8429568 bytes, type: file)

 Archiving completed to '/data/jinkim/work/inc_backup_dir/incre_level0_mon.abk'
 ========================================
   Total Size:    0.24 GB
   Files:         8
   Directories:   1
   Time:          1 seconds
   Avg Speed:     241.46 MB/s
 =================================================
[ABM] DELETE INPUT
 Deleted 8 file(s) at /data/jinkim/work/inc_backup_dir/TAG_MON including directory itself.
Successfully executed incremental backup

## STEP 5: level 1 백업
abm(sysdba)> BACKUP INCREMENTAL LEVEL 1 DATABASE WITH TAG 'level1_0' TO FILE '/data/jinkim/work/inc_backup_dir/incre_level1_0.abk' WITH PASSWORD 'backuptest' DELETE INPUT;
[Server]
 Command: ALTER DATABASE BACKUP INCREMENTAL LEVEL 1  DATABASE WITH TAG 'level1_0'
 elapsed time : 6.22 sec.
[ABM] COMPRESS & ENCRYPT
 Archiving '/data/jinkim/work/inc_backup_dir/TAG_level1_0' (basename: 'TAG_level1_0')
 1. TAG_level1_0 (size: 4096 bytes, type: dir)
 2. TAG_level1_0/SYS_TBS_MEM_DATA-0-0_TAG_level1_0.ibak (size: 728 bytes, type: file)
 3. TAG_level1_0/loganchor2 (size: 7600 bytes, type: file)
 4. TAG_level1_0/undo001.dbf_TAG_level1_0.ibak (size: 736 bytes, type: file)
 5. TAG_level1_0/system001.dbf_TAG_level1_0.ibak (size: 736 bytes, type: file)
 6. TAG_level1_0/loganchor0 (size: 7600 bytes, type: file)
 7. TAG_level1_0/loganchor1 (size: 7600 bytes, type: file)
 8. TAG_level1_0/SYS_TBS_MEM_DIC-0-0_TAG_level1_0.ibak (size: 728 bytes, type: file)
 9. TAG_level1_0/backupinfo (size: 6080 bytes, type: file)

 Archiving completed to '/data/jinkim/work/inc_backup_dir/incre_level1_0.abk'
 ========================================
   Total Size:    0.00 GB
   Files:         8
   Directories:   1
   Time:          0 seconds
   Avg Speed:     0.00 MB/s
 =================================================
[ABM] DELETE INPUT
 Deleted 8 file(s) at /data/jinkim/work/inc_backup_dir/TAG_level1_0 including directory itself.
Successfully executed incremental backup

## STEP 6: level 0 백업 파일의 압축해제
abm(sysdba)> restore archive '/data/jinkim/work/inc_backup_dir/incre_level0_mon.abk' to directory '/data/jinkim/work/inc_backup_dir/' with password 'backuptest';
[ABM] DECRYPT & DECOMPRESS
 Encrypted file detected: /data/jinkim/work/inc_backup_dir/incre_level0_mon.abk
 Decryption processing started
 Extracking to: /data/jinkim/work/inc_backup_dir
 1. TAG_MON/ (size: 0 bytes, type: dir)
 2. TAG_MON/loganchor2 (size: 7600 bytes, type: file)
 3. TAG_MON/undo001.dbf_TAG_MON.ibak (size: 135274496 bytes, type: file)
 4. TAG_MON/system001.dbf_TAG_MON.ibak (size: 104865792 bytes, type: file)
 5. TAG_MON/loganchor0 (size: 7600 bytes, type: file)
 6. TAG_MON/SYS_TBS_MEM_DIC-0-0_TAG_MON.ibak (size: 4595712 bytes, type: file)
 7. TAG_MON/loganchor1 (size: 7600 bytes, type: file)
 8. TAG_MON/backupinfo (size: 3296 bytes, type: file)
 9. TAG_MON/SYS_TBS_MEM_DATA-0-0_TAG_MON.ibak (size: 8429568 bytes, type: file)
 ========================================
    Total Size:    0.24 GB
    Files:         8
    Directories:   1
    Time:          1 seconds
    Avg Speed:     241.46 MB/s
 =================================================
Successfully executed restore archive

## STEP 7: level 1 백업 파일의 압축해제
abm(sysdba)> restore archive '/data/jinkim/work/inc_backup_dir/incre_level1_0.abk' to directory '/data/jinkim/work/inc_backup_dir/' with password 'backuptest';
[ABM] DECRYPT & DECOMPRESS
 Encrypted file detected: /data/jinkim/work/inc_backup_dir/incre_level1_0.abk
 Decryption processing started
 Extracking to: /data/jinkim/work/inc_backup_dir
 1. TAG_level1_0/ (size: 0 bytes, type: dir)
 2. TAG_level1_0/SYS_TBS_MEM_DATA-0-0_TAG_level1_0.ibak (size: 728 bytes, type: file)
 3. TAG_level1_0/loganchor2 (size: 7600 bytes, type: file)
 4. TAG_level1_0/undo001.dbf_TAG_level1_0.ibak (size: 736 bytes, type: file)
 5. TAG_level1_0/system001.dbf_TAG_level1_0.ibak (size: 736 bytes, type: file)
 6. TAG_level1_0/loganchor0 (size: 7600 bytes, type: file)
 7. TAG_level1_0/loganchor1 (size: 7600 bytes, type: file)
 8. TAG_level1_0/SYS_TBS_MEM_DIC-0-0_TAG_level1_0.ibak (size: 728 bytes, type: file)
 9. TAG_level1_0/backupinfo (size: 6080 bytes, type: file)
 ========================================
    Total Size:    0.00 GB
    Files:         8
    Directories:   1
    Time:          1 seconds
    Avg Speed:     0.03 MB/s
 =================================================
Successfully executed restore archive
abm(sysdba)> exit

위 시나리오에서 /data/jinkim/work/inc_backup_dir 경로에 TAG_MON , TAG_level1_0디렉토리에서 압축해제된 백업 파일의 목록을 확인할 수 있다. 이 파일들을 이용하여 iSQL을 이용한 복구를 진행한다.

iSQL을 이용한 복구#

복구는 iSQL을 이용해야 한다. 증분 백업의 복원 및 복구는 Administrator's Manual > 11. 중분 백업과 복구를 참고하여 진행해야 한다.

로그#

abm은 실행 시 abm.log 로그 파일을 자동으로 생성한다. 로그는 파일당 최대 1 MiB 크기로 관리되며, 총 5개의 로그 파일이 순환 방식으로 기록된다. 로그 파일은 abm이 실행되는 경로에 생성된다.

사용된 오픈 소스 라이브러리#

Library License Site
libarchive New BSD License https://www.libarchive.org
OpenSSL The OpenSSL software library (under the Apache License) https://www.openssl.org
bzip2 BSD 3-Clause License https://sourceware.org/bzip2/
xz-utils (liblzma) Public Domain https://tukaani.org/xz/
libxml MIT License (--without-iconv) https://gitlab.gnome.org/GNOME/libxml2
libz zlib License http://www.zlib.net/zlib_license.html