개요
SQL 수행 중 sys.log에 에러가 발생한 로그들에 대해 에러를 유발한 SQL을 확인할 수 있는 방법을
예시와 함께 안내합니다.
방법
적용 예시
사용 환경
•
client tool: tbsql
•
DBMS: Tibero6
에러 발생 상황
SQL> desc tibero.test
COLUMN_NAME TYPE CONSTRAINT
---------------------------------------- ------------------ --------------------
ID NUMBER
NAME VARCHAR(20)
ADDRESS VARCHAR(50)
SQL> insert into tibero.test values (1,'aaaaaaaaaaaaaaaaaaaaaaaaa','bbb');
TBR-11048: "TIBERO"."TEST"."NAME" The value is too large for the column. (Actual value: 25, Maximum value: 20)
SQL
복사
1. memlog path 확인
SQL> show parameter mem_log_dest
NAME TYPE VALUE
---------------------------- -------- ----------------------------------------
MEM_LOG_DEST DIRNAME /home/tibero_single/tibero6/instance/tibero_sing1/log/memlog/
SQL
복사
2. sys.log에서 에러 확인
vi sys.log
...
[05-17T10:41:00.472773] [FRM-63] [I] THROW. ec=ERROR_EXP_NOT_FIT_LEN(-11048) [ "TIBERO"."TEST"."NAME" The value is too large for the column. (Actual value: 25, Maximum value: 20)] (csr_id:19) [dt.h:675:dtv_pad_space_or_check_fit_into]
...
SQL
복사
3. memlog dump 수행
sys user로 로그인 후 memlog dump를 수행합니다.
SQL> alter system dump memlog 63; —> 위에서 확인한 세션id 입력
System altered.
SQL
복사
4. memlog dumpfile 확인
CSR_ID:19 을 기준으로 검색 시 관련 SQL을 확인할 수 있습니다.
[tibero_single@test02 memlog]$ ls -al
합계 8
drwxr-xr-x. 2 tibero_single dba 34 5월 17 10:42 .
drwxr-xr-x. 8 tibero_single dba 123 5월 17 10:42 ..
-rw-r--r--. 1 tibero_single dba 7112 5월 17 10:42 sql_memlog.2358.63.0
—> 파일명은 sql_memlog.xxxx.63.x 으로 위에서 확인한 세션id가 포함되어있습니다.
따라서 세션id 및 file 생성시간등을 참고하여 file을 확인합니다.
$ vi sql_memlog.2358.63.0
##파일에서 CSR_ID:19 찾기
...
WHERE HH.OBJ_ID = ? AND HH.COL_NO = ? AND HH.HIST_HEAD_ID = H.HIST_HEAD_ID(+) ORDER BY BUCKET
05/17 10:41:00.471870 CSR_ID:19 insert into tibero.test values (1,'aaaaaaaaaaaaaaaaaaaaaaaaa','bbb')
05/17 10:41:00.472359 CSR_ID:20 SELECT /*+ default_stat index(HH _DD_HIST_HEAD_IDX1) use_nl_with_index(H _DD_HISTOGRAM_IDX1) ordered */
...
SQL
복사
주의
dump 대상 세션에서 다수의 SQL 사용 혹은 매우 긴 SQL 수행과 같은 상황 발생 시,
이전 SQL은 밀려나 조회되지 않을 수 있습니다.