log transaction 발생한 세션을 찾는 방법
원본출처 : http://tilldawn.co.kr/servlet/HeormBbsLst?code=DA&page=2&sch=
log transaction이란 , 상대적인 개념으로, 논리로그 파일이 백업되지 않고 사용되어 LTXHWM에 도달했을 때 commit되지 않은 채 가장 오랫동안 개방되어 있는 트랜잭션을 말합니다.
log transaction이 발생하면 다른 작업에 치명적인 영할을 키침니다.
보통 DB가 logging 모드에 있고, 많은 량의 데이터를 로드, 삭제, 수정할 경우
일어 날 수 있으며, LTAPEDEV가 백업 장치에 설정되어 있다면 log가 다 찼음에도 backup을 받아 log를 비우지 않을때는 문제가 발생합니다.
만약 이번에 새로 출시 된 9.30을 쓰고 계신다면 엔진이 자동으로 log를 늘릴 수 있으므로 어느정도 해결은 될 수 있지만 근원적인 문제는 남아있지요.
1. 근원적인 문제가 되는 sql을 파악하여 AP를 수정
sql session을 잡는 법
database sysmaster;
select sid,tty,pid,username, tx_logbeg,tx_logtx
from systrans,syssessions, sysuserthreads
where us_address = tx_owner
and sid=us_sid
and tx_longtx=1;
하여 sid를 알아낸 후
onstat -g sql sid를 치시면 됩니다.
2. onconfig 파라메터에 LTAPEDEV /dev/null
NT는 NUL
로 수정 후 백업 정책은 ontape 명령으로 해결한다. ( 주기적인 백업이 중요 )
3. 대용량의 데이터 작업은 database 모드를 NONE으로 변경 후 작업을 실시하고 작업 후에는 BUFFERED,UNBUFFERED로 바꾼다.
$INFORMIXDIR/etc/onconfig의 TAPEDEV /dev/null로 수정 후
$ontape -s -N databasename
작업.....
작업후..
$ontape -s -B(or U) databasename
|