기술 정보
home
채널 소개
home

memlog dump를 통한 에러유발 SQL추출

문서 유형
기술 정보
기술 정보
분야
모니터링/점검
키워드
memlog
적용 제품 버전
6FS06
6FS07
7FS02

개요

sys.log에 에러 발생 시 에러를 유발하는 sql을 추적하기 어려운 경우가 있습니다.
이 때 memlog dump를 통해 에러유발 sql을 찾는 방법을 안내합니다.

방법

1. sys.log 확인

아래 에러 구문에서 sid와 cursor_id(이하 csr_id)를 획득할 수 있습니다. (sid : 2616, csr_id : 5909)
$ vi $TB_HOME/instance/$TB_SID/log/slog/sys.log [03-11T14:10:13.976905] [FRM-2616] [I] THROW. ec=ERROR_DT_INVALID_DT_INPUT(-5113) [ Invalid year value 'X'. (X) ] (csr_id:5909) [datetime_fmt.c:411:parse_yyyy_]
SQL
복사

2. dump 추출

SQL> alter system dump memlog 2616
SQL
복사

3. dump 확인

dump 명령어를 수행한 시간 기준으로 file을 찾습니다.
$ cd $TB_HOME/instance/$TB_SID/log/memlog $ vi sql_memlog.xxxxx.2616.1
SQL
복사

4. SQL 추출

csr_id 5909를 검색하여 해당 SQL을 추출합니다.
03/11 14:10:13.963835 CSR_ID:5909 WITH MY_INFO AS ( SELECT PERS_NO, DEPT_ID, USER_DIV_CD, SOCPS_CD, ACTVI_YN FROM COM.CSYS021 WHERE PERS_NO = :B1 /* 소속부서 */ (생략)
C
복사
주의
트랜잭션이 많은 시스템에서는 에러로그 확인 후 memlog 수행 시, memlog 상 sql 저장공간 제약으로 찾고자 하는 에러유발 sql이 덮어쓰기되어 사라질 수 있습니다.
따라서 빠르게 sid를 캡쳐하여 dump를 수행 합니다.