database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
ㆍDB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
DB2 Q&A 1212 게시물 읽기
No. 1212
db2start 후에 며칠동안 아카이브로그를 엄청나게 만들어냅니다.
작성자
반월성(mkheo0909)
작성일
2006-12-09 10:12
조회수
9,053

안녕하세요. 고수님들께 문의드리고자 합니다.

지난번에 DB2시스템이 문제가 생겨서 DB을 리스타트 하였습니다. 

그 후에 한 일주간에 엄청나게 많은 아카이브로그화일을 생성하다가 정상적(하루게 대여섯개)으로 돌아왔습니다.


며칠 전에 하드웨어작업으로 인해서 정상적으로 DB2를 리스타트하였습니다.... 그랬더니 아직도 계속 엄청나게

아카이브로그를 만들고 있습니다. 오라클의 경우라면 로그스위치가 엄청나게 많이 발생하고 있는 것과 같습니다.

실제로 DB2는 수정/삽입/삭제 작업이 별로 없습니다. 왜 이런 현상이 발생하는 지요...


db2diag.log을 열어보면 아래와 같은 메시지가 발생합니다.

2006-12-08-17.05.26.508960-480 I1136A361          LEVEL: Warning

PID     : 393340               TID  : 1           PROC : db2loggr (SAMDB0) 0

INSTANCE: saminst0             NODE : 000         DB   : SAMDB0 

FUNCTION: DB2 UDB, data protection, sqlpghck, probe:1390

MESSAGE : ExtNum 36430, state 401, baselsn 0000058F4AAF8000 nextlsn

          0000058F4B5100E2

2006-12-08-17.05.26.736863-480 I1498A355          LEVEL: Warning

PID     : 967144               TID  : 1           PROC : db2logmgr (SAMDB0) 0

INSTANCE: saminst0             NODE : 000

FUNCTION: DB2 UDB, data protection, sqlpgArchiveLogFile, probe:3180

MESSAGE : Successfully archived log file S0036430.LOG to USEREXIT from

          /sam_log/NODE0000/.

2006-12-08-17.06.06.662245-480 I1854A350          LEVEL: Warning

PID     : 393342               TID  : 1           PROC : db2loggr (SAMDB0) 0

INSTANCE: saminst0             NODE : 000         DB   : SAMDB0 

FUNCTION: DB2 UDB, data protection, sqlpgLoggrInitDelOldLog, probe:1440

MESSAGE : Cleaning up logs from RenameArchNum 36430 to delLimit 36431


고수님들의 고견을 기다립니다...

이 글에 대한 댓글이 총 6건 있습니다.

application이 아니라 님이 직접 db에 connect를 맺으시고 이것을 terminate하지 말아보세요. 
그리고 이 connection이 살아 있는데도 log가 계속 늘어나는지 봐주세요.

마라도님이 2006-12-11 13:40에 작성한 댓글입니다.
이 댓글은 2006-12-11 13:41에 마지막으로 수정되었습니다. Edit

같은 문제로 고민중입니다.
아카이브 로그가 엄청 쌓이네요
좀 더 자세한 원인과 해결 방법을 알려주시면 대단히 감사하겠습니다.
그럼..

알고잡다님이 2006-12-21 17:19에 작성한 댓글입니다. Edit

제 생각으로는 로그 발생량이 많은 DB는 application 갯수가 많지 않은 것으로 보고 말씀을 드린것입니다. 
db2는 db2start이후 각각의 db에 대해 자원을 할당하는 시기를  application이 최초로 connect 할 때와 db를 activate할 때 합니다.
그리고 접속된 application들이 하나도 없게되는 경우에 db에 할당한 자원을 정리합니다. 

이 경우 제 기억으로는 사용하던 log도 같이 정리되고 다음 최초의 connect시 다음 로그번호부터 다시 시작을 했던 것으로 생각이 듭니다.  

님의 db에 log가 많이 발생하는 이유가 위와 같다면 님이 db에 connect를 최소한 하나이상을 맺어놓으시고 로그가 계속 발생하는지를 테스트 해보세요. 

그리고 예전에 db2의 버그중에 userexit를 사용할때 로그 갯수가 많이 늘어나는 경우도 있었습니다. 
테스트해보시고 말씀해주세요.

마라도님이 2006-12-22 10:49에 작성한 댓글입니다.
이 댓글은 2006-12-22 11:01에 마지막으로 수정되었습니다. Edit

마라도님, 답변 감사합니다.
근데 저의 경우 웹서버에서 커넥션풀을 사용해서 항상 5~10개 정도의 커넥션을 유지합니다.
그런데도 하루에 아카이브된 사이즈가 20기가가 넘어갑니다.
트랜잭션도 그렇게 많지 않은데..쩝..
아무래도 버그가 아닌가 싶네요. 
참고로 현재 사용중인 버전은 DB2 V7.1.0.98 입니다.

알고잡다님이 2006-12-22 12:17에 작성한 댓글입니다. Edit

버그 때문인것 같은데 fix를 마지막 것으로 적용해보세요. 
님의 fix가 어디까지 적용이 되었는지 확인을 할 수가 없네요 ... 

ftp.software.ibm.com/ps/products/db2/fixes/korean 
에 가시면 fix를 받으실 수 있습니다.  
의심스런 것이 userexit인데 함 userexit를 off하고 테스트를 해보세요. 

버그가 확실하고 fix를 올려도 문제가 된다면 log를 정리해주는 스크립트를 만들어서 서버의 crontab에 등록해보세요.  파일 시스템 크기만 넉넉하다면 쓸만합니다. 
저는 이방법을 사용하고 있습니다. 

참고로 사용하는 스크립트입니다. 


. /home/db2inst1/.profile
. /home/db2inst1/sqllib/db2profile

integer CLN=0
integer RN=0
integer LC=0
integer DN=235
LPATH=/DBNAME/LOG/NODE0000
RPATH=/DBJOB/RMLOG

db2 get db cfg for DBNAME | grep 처음에 | awk '{print substr($6,2,7)}' |read CLN

rm -f $RPATH/LOG1/*.LOG
#mv $RPATH/LOG1/*.LOG $RPATH/LOG1/BACKUP

echo $CLN >> $RPATH/LOG1/rm.LOG
CLN=$CLN-$DN
echo $CLN >> $RPATH/LOG1/rm.LOG

for RN in `ls -al $LPATH/*.LOG |awk '{print substr($9,24,7)}'`
do
 if [ `expr $CLN \> $RN` -eq 1 ] ; then
    SRN=`printf "S%07s.LOG" $RN`
    echo $LPATH/$SRN $RPATH/LOG1 >> $RPATH/LOG1/rm.LOG
    mv $LPATH/$SRN $RPATH/LOG1   >> $RPATH/LOG1/rm.LOG
    LC=$LC+1
 fi
done

date     >> $RPATH/LOG1/rmlog_cnt.out
echo $LC >> $RPATH/LOG1/rmlog_cnt.out


마라도님이 2006-12-22 16:04에 작성한 댓글입니다. Edit

마라도님 답변 감사드립니다.

로그 파일이 늘어나는 이유에 대해서 아이비엠 엔지니어는 아래와 같은 이유를 들더군요.

1. BLOB type 컬럼을 쓰는지.. (생각보다 많은 로깅이 된다네요)

2. Batch Task가 있는지 (Delete Whole data or migrate data)

3. db snapshot으로 commit & execute & update 횟수를 체크 (얼마나 자주 일어나는지..)


저의 경우에는 1번에 해당되네요. 아직 BLOB type 컬럼을 Logging 안시키도록 해보지는 않았습니다.

테스트 후 결과 올리도록 하겠습니다.

그런데, 아직까지 궁금한게 프라이머리 로그 숫자를 50으로 지정했으면 액티브 로그 파일도 50이 되어야 하는데 왜 20개만 사용일 될까여? 처음 디비 리스타트 했을때 50개가 생성되는데 며칠 후에 보면 20개 밖에 사용되지 않습니다. (userexit에 의해서 다른 디렉토리로 무브 되고 새 파일이 생성되고...)



그럼.. 수고하세요

알고잡다님이 2006-12-25 17:02에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1216index reorg 대한 질문 하나요! [1]
db2man
2006-12-14
8316
1215db2에서 CLOB필드 조회는 어떻게 하나요? [1]
김정교
2006-12-12
8064
1214xml쿼리좀 봐주시겠습니까
봉사마
2006-12-12
7142
1212db2start 후에 며칠동안 아카이브로그를 엄청나게 만들어냅니다. [6]
반월성
2006-12-09
9053
1211No license is present.에러에 대하여
봉사마
2006-12-08
7499
1209DB2 초보 유저입니다.. [1]
권우석
2006-12-08
7998
1206DB2 Client Version 9설치 [2]
백구
2006-12-07
9105
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.021초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다