'archive'에 해당되는 글 2건

  1. 2009.08.24 Archive log 발생량 알아내기
  2. 2009.04.16 db2diag.log 분할하기
Archive log가 얼마나 발생하는 지에 따라서 archiving 정책을 정하는 것은
안정적인 운영을 위해 당연한 것이다.

다음의 스크립트를 사용하여
  • 일별 Archive log의 발생량, 또는
  • 일 평균 Archive log 발생량, 일 최대 Archive log 발생량
을 확인할 수 있다.

#// 변수 초기화
export db=${DBNAME}
diagPath=$(db2 get dbm cfg|grep DIAGPATH)
export diagPath=${diagPath#*=}
logfileSZ=$(db2 get db cfg for $db |grep LOGFILSIZ)
export logfileSZ=${logfileSZ#*=}

#// 아카이브 로그 발생량 측정
find $diagPath -name "db2diag.log*" -type f | xargs egrep -p 'Completed archive|Successfully archived' | grep 'LEVEL: Warning' | cut -c 1-10 |
nawk '{occur[$1]++} END {for (dateItem in occur) print dateItem, occur[dateItem] * 4 * '"$logfileSZ"' / 1024}' | sort -n |
nawk '{sum=sum+$2;if ($2>max){max=$2}} END {print "SUM="sum/1024" GB\n""AVG="sum/NR" MB\n""MAX="max" MB"}'

측정하고자 하는 DB의 alias를 ${DBNAME} 부분에 써넣어 환경 설정을 한 후
파란 부분까지 수행하면 일별 Archive log 발생량을,
보라색 부분까지 수행하면 일 평균, 일 최대 Archive log 발생량을 알 수 있다.

dbm cfg에 명시된 DIAGPATH에 존재하는
모든 db2diag.log에 대해서 찾는 스크립트 이므로 (db2diag -A 로 분할된 파일도 모두 포함)
db2diag.log를 삭제한 적이 있거나 다른 곳으로 옮겨두었다면
데이터가 정확하지 않을 수 있다.

ksh88, DB2 v8.2 ~ DB2 v9.5에서 테스트 되었고,
Solaris ksh는 ksh88과 호환되지 않으므로 실행되지 않는다.
또한 DB2 v.8.x의 경우 Circular mode에서 Archived 메시지를 남기지 않으므로
이런 경우에는 집계가 불가능하다.

참고로, DB2 v8.2에서는 Archive 시 "Successfully archived log file" 이 발생하고
DB2 v9.5에서는 Archive시 "Completed archive for log file" 이 발생한다.
Posted by in0de
,

db2diag.log 분할하기

DB2 LUW 2009. 4. 16. 14:50
db2diag.log는 db에 문제가 생겼을 때 참조할 수 있는
가장 확실하고 가장 먼저 살펴볼 제 1의 레퍼런스이다.

db2diag.log는
active log, archive log, loadcopy, dump, tablespaces 와 함께
용량관리를 해주어야 하는 대상이 되는데

db2diag 커맨드는 db2diag.log를 분석하는 포매팅 툴로서,
제공하는 기능들 중에서 -A 옵션으로, db2diag.log를 분할하여 archive 할 수 있다.

in root's crontab
59 23 * * * su - ${instance user} -c "db2diag -A ${diagpath}/db2diag.log" > /dev/null 2>&1

매일 오후 23시 59분에 db2diag.log를 db2diag.log_YYYY-MM-DD-HH.MM.SS 형태로
하루에 하나씩 db2diag.log를 새로 생성하도록 해두면
로그를 검색하기도 쉽고 오래된 로그를 백업해두거나 삭제하는 정책을 만들기도 좋다.
Posted by in0de
,