DB2에서 백업, 아카이브 로그, 복구 히스토리는 서로 관련이 있는 시스템?들이다.

백업의 유형에 따라 아카이브 로그를 사용할 수도 있고 사용 안 할 수도 있지만, 복구 히스토리는 백업, reorg, 테이블 공간 변경, 아카이브 로그 등등에 대한 실행 기록들을 보관을 한다.

따라서 이에 대해 별 생각없이 DB 관리를 하다 보면, 복구 히스토리 파일(db2rhist.asc)은 비대해 지고, (file system에 백업을 받아 놓는 경우) 백업 이미지로 인해 disk full이 되는 상황이 발생하게 된다.

앞으로 쓰고자 할 내용은 권장을 하는 내용은 아니고, “관리를 최소화 하고자 하는 경우” 이렇게 하면 이 부분들에 대한 관리 부담을 줄일 수 있는 방법이 존재한다는 것을 참고적으로 보이고자 한다.

V9.5에서 추가된 db 구성변수로 알고 있는데 AUTO_DEL_REC_OBJ 라는 변수가 있다.

기본 값은 OFF이지만, ON으로 변경을 하게 되면 NUM_DB_BACKUP 와 REC_HIS_RETENTN 값을 초과하는 백업 이미지, 복구 히스토리 기록, 관련 archive log 들을 자동으로 삭제를 한다.

따라서 나름 업무 특성을 잘 감안해서 이런  변수에 대한 값을 설정해 두면, disk full 이나 io 성능 저하 문제를 사전에 예방할 수 있다.

NUM_DB_BACKUP의 기본값은 12개 이고, 백업 이미지 보관 개수를 12개로 한다는 것을 의미한다. 즉 13개의 백업이미지가 생기게 되면 가장 오래된 백업 이미지가 AUTO_DEC_REC_OBJ 값에 의하여 자동 삭제가 된다.

REC_HIS_RETENTN  기본값은 366일 이고, 366일 이상 기록이 발생한 경우 가장 오래된 일자의 기록들이 AUTO_DEC_REC_OBJ 값에 의하여 삭제가 된다. 이때 관련된 archive log 들도 삭제가 된다.

 

온라인 백업을 위한 설정

$ db2 get db cfg for sample | grep -i logarchmeth1
     First log archive method                 (LOGARCHMETH1) = OFF

$ db2 update db cfg for sample using logarchmeth1 disk:/database/arclog
     DB20000I  The UPDATE DATABASE CONFIGURATION command completed successfully.

$ db2 backup db sample to /database/backup
   Backup successful. The timestamp for this backup image is : 20111212143512

 

백업, 복구 히스토리 파일 자동 삭제 설정

$ db2 update db cfg for sample using num_db_backups 3 rec_his_retentn 0 auto_del_rec_obj on
  DB20000I  The UPDATE DATABASE CONFIGURATION command completed successfully.

$ db2 get db cfg for sample | egrep -i 'num_db_backups|rec_his_*|auto_del_rec_obj'

Number of database backups to retain   (NUM_DB_BACKUPS) = 3
Recovery history retention (days)     (REC_HIS_RETENTN) = 0
Auto deletion of recovery objects    (AUTO_DEL_REC_OBJ) = ON

 

아카이브 로그 및 백업 이미지 확인

$ ls -al /database/arclog/inst97/SAMPLE/NODE0000/C0000000

합계 8
drwxr-x--- 2 inst97 db2igrp 4096 12월 12 14:34 .
drwxr-x--- 3 inst97 db2igrp 4096 12월 12 14:34

$ ls -al /database/backup

-rw------- 1 12월 12 14:35 SAMPLE.0.inst97.NODE0000.CATN0000.20111212143512.001

 

온라인 백업 1회

$ db2 backup db sample online to /database/backup compress
Backup successful. The timestamp for this backup image is : 20111212144420

$ ls -al /database/arclog/inst97/SAMPLE/NODE0000/C0000000

합계 20
drwxr-x--- 2 inst97 db2igrp  4096 12월 12 14:44 .
drwxr-x--- 3 inst97 db2igrp  4096 12월 12 14:34 ..
-rw-r----- 1 inst97 db2igrp 12288 12월 12 14:44 S0000000.LOG

 

온라인 백업 2, 3회

$ db2 backup db sample online to /database/backup compress
Backup successful. The timestamp for this backup image is : 20111212144604

$ db2 backup db sample online to /database/backup compress
Backup successful. The timestamp for this backup image is : 20111212144718

$ ls -al /database/arclog/inst97/SAMPLE/NODE0000/C0000000

합계 44
drwxr-x--- 2 inst97 db2igrp  4096 12월 12 14:47 .
drwxr-x--- 3 inst97 db2igrp  4096 12월 12 14:34 ..
-rw-r----- 1 inst97 db2igrp 12288 12월 12 14:44 S0000000.LOG
-rw-r----- 1 inst97 db2igrp 12288 12월 12 14:46 S0000001.LOG
-rw-r----- 1 inst97 db2igrp 12288 12월 12 14:47 S0000002.LOG

$ ls -al /database/backup

-rw------- 1 12월 12 14:44 SAMPLE.0.inst97.NODE0000.CATN0000.20111212144420.001
-rw------- 1 12월 12 14:46 SAMPLE.0.inst97.NODE0000.CATN0000.20111212144604.001
-rw------- 1 12월 12 14:47 SAMPLE.0.inst97.NODE0000.CATN0000.20111212144718.001

최초의 백업인 (아카이브 로깅 설정에 따른) offline backup (시간소: 14시 35분) 이미지가 삭제되었다

 

온라인 백업 4회

$ db2 backup db sample online to /database/backup compress
Backup successful. The timestamp for this backup image is : 20111212145049

$ ls -al /database/arclog/inst97/SAMPLE/NODE0000/C0000000
합계 44
drwxr-x--- 2 inst97 db2igrp  4096 12월 12 14:50 .
drwxr-x--- 3 inst97 db2igrp  4096 12월 12 14:34 ..
-rw-r----- 1 inst97 db2igrp 12288 12월 12 14:46 S0000001.LOG
-rw-r----- 1 inst97 db2igrp 12288 12월 12 14:47 S0000002.LOG
-rw-r----- 1 inst97 db2igrp 12288 12월 12 14:50 S0000003.LOG

 

$ ls -al /database/backup

-rw------- 1 12월 12 14:46 SAMPLE.0.inst97.NODE0000.CATN0000.20111212144604.001
-rw------- 1 12월 12 14:47 SAMPLE.0.inst97.NODE0000.CATN0000.20111212144718.001
-rw------- 1 12월 12 14:50 SAMPLE.0.inst97.NODE0000.CATN0000.20111212145049.001

온라인 백업 1회 이미지 (시간소: 14시 44분) 와 0번 archive log가 삭제되었다

 

복구 히스토리 파일 조회

$ db2 list history all for sample

                    List History File for sample

Number of matching file entries = 6


Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log  Backup ID
-- --- ------------------ ---- --- ------------ ------------ --------------
  X  D  20111212144501      1    D  S0000001.LOG C0000000
----------------------------------------------------------------------------

  EID: 8 Location: /database/arclog/inst97/SAMPLE/NODE0000/C0000000/S0000001.LOG


Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log  Backup ID
-- --- ------------------ ---- --- ------------ ------------ --------------
  B  D  20111212144604001   N    D  S0000001.LOG S0000001.LOG
----------------------------------------------------------------------------
  Contains 5 tablespace(s):

----------------------------------------------------------------------------
    Comment: DB2 BACKUP SAMPLE ONLINE
Start Time: 20111212144604
   End Time: 20111212144611
     Status: A
----------------------------------------------------------------------------
  EID: 9 Location: /database/backup


Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log  Backup ID
-- --- ------------------ ---- --- ------------ ------------ --------------
  X  D  20111212144724      1    D  S0000002.LOG C0000000
----------------------------------------------------------------------------

  EID: 10 Location: /database/arclog/inst97/SAMPLE/NODE0000/C0000000/S0000002.LOG


Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log  Backup ID
-- --- ------------------ ---- --- ------------ ------------ --------------
  B  D  20111212144718001   N    D  S0000002.LOG S0000002.LOG
----------------------------------------------------------------------------
  Contains 5 tablespace(s):

   ----------------------------------------------------------------------------
    Comment: DB2 BACKUP SAMPLE ONLINE
Start Time: 20111212144718
   End Time: 20111212144725
     Status: A
----------------------------------------------------------------------------
  EID: 11 Location: /database/backup


Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log  Backup ID
-- --- ------------------ ---- --- ------------ ------------ --------------
  X  D  20111212145055      1    D  S0000003.LOG C0000000
----------------------------------------------------------------------------

EID: 12 Location: /database/arclog/inst97/SAMPLE/NODE0000/C0000000/S0000003.LOG


Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log  Backup ID
-- --- ------------------ ---- --- ------------ ------------ --------------
  B  D  20111212145049001   N    D  S0000003.LOG S0000003.LOG
----------------------------------------------------------------------------
  Contains 5 tablespace(s):

  ----------------------------------------------------------------------------
    Comment: DB2 BACKUP SAMPLE ONLINE
Start Time: 20111212145049
   End Time: 20111212145056
     Status: A
----------------------------------------------------------------------------
  EID: 13 Location: /database/backup

복구 히스토리 파일에는 6개의 기록이 남아있다.

온라인 백업이 발생될 때마다 트랜잭션 로그(active log) 의 백업(archive log)이 발생하기 때문에 총 6개의 기록 (log archiving 3회, online backup 3회) 남았으며,

이전에 발생된 백업 2개 ( 14시 35분, 14시 44분) 와 관련된 트랜잭션 로그 백업(log archive), 기록도 삭제되었다. 또한 물리적으로 0번 archive log도 삭제되었다.

 

백업을 위한 디스크 공간이 제약적이고, 온라인 백업을 위한 트랜잭션 로그 백업(archive log) 공간도 부족한 경우 위와 같이 설정함으로써 disk full 상황을 예방할 수 있다.

반면 실시간 복제를 하는 시스템 등의 경우, 경우에 따라서 archive log를 사용하는 경우가 발생하므로 업무 환경에 따라서 많은 주의를 기울이고 적용해야 될 것이다.

'Note' 카테고리의 다른 글

[관리] 데이터베이스 크기 확인  (0) 2011.12.26
[SQL] Recursive 처리 (재귀 SQL)  (0) 2011.12.19
[SQL] 익명 블록 (Anonymous Block)  (0) 2011.12.05
[SQL] 자율 트랜잭션(Autonomous Transaction)  (0) 2011.11.28
[SQL] Logon Trigger  (0) 2011.11.07

+ Recent posts