Background Image
운영관리
2016.04.26 20:15

Invalid XASL tree node content 에러

조회 수 4477 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

server error log, cas error log 에서 "Invalid XASL tree node content" 에러 메시지가 발견되는 경우가 있다.

해당 메시지는 plan cache가 유효하지 않은 상태여서 에러가 발생하였다는 것이다.

plan cache는 한번 생성된 plan을 재 사용하기 위해 저장해두는 것으로, 동일한 쿼리가 요청되어질 때 plan 생성 단계를 거치지 않기 때문에 성능향상에 도움이 된다.

plan을 무한정 저장할 수 없기 때문에 일정 개수만큼 저장하도록 관리되고 있고, 기본 설정으로 1000개가 저장된다. (http://www.cubrid.com/manual/93/admin/config.html#plan-cache-parameters )

쿼리 처리에 따른 plan은 아래 절차에 의해 처리된다.

1.     Prepare 단계에서 해당 쿼리에 대한 plan plan cache에 존재하는지 확인

2.     존재하지 않으면 plan 생성

3.     존재하면 plan 생성 작업 생략하고 plan cache id 전달

4.     Execute 단계에서 plan cache id를 가지고 plan 확인하여 쿼리 실행

위 단계 중 3에 해당되어 execute 진행 중 plan 확인하는 과정에서 실제 plan이 존재하지 않아 “Invalid XASL tree node content” 오류가 발생하는 것이다.

해당 오류가 발생하면 prepare 단계부터 다시 수행하여 plan을 생성하고 처리한다.

오류 메시지는 내부 기록되기만 하고 쿼리를 호출한 응용에 전달되지는 않으므로 사용자는 오류 발생 여부를 인지하지 못한 상태에서 재 처리가 완료된다.

아래는 오류 발생 시 기록되는 sql log 예제이다.

Execute 실패하여 prepare 부터 다시 수행됨을 볼 수 있다.

04/19 18:57:20.339 (58) execute srv_h_id 14 select * from foo where a=? and b=?

04/19 18:57:20.339 (58) bind 1 : NUMERIC 1

04/19 18:57:20.339 (58) bind 2 : NUMERIC 2

04/19 18:57:20.339 (58) execute error:-10024 tuple 1 time 0.000, EID = 249

04/19 18:57:20.340 (0) check_cas 0

04/19 18:57:20.341 (204) prepare 0 select * from foo where a=? and b=?

04/19 18:57:20.342 (204) prepare srv_h_id 160

04/19 18:57:20.342 (204) execute srv_h_id 160 select * from foo where a=? and b=?

04/19 18:57:20.342 (204) bind 1 : NUMERIC 1

04/19 18:57:20.342 (204) bind 2 : NUMERIC 1

04/19 18:57:35.763 (204) execute 0 tuple 1 time 0 

참고로 Cas log에는 -10024 오류가 기록되고, DB Server log에는 -452 오류가 기록된다.


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
77 운영관리 백업파일을 이용하여 데이터베이스가 없는 다른 서버에서 복구하는 방법 admin 2008.11.21 22044
76 운영관리 HP-ux에서 jvm loading이 실패하는 경우 조치 사항 admin 2008.11.21 22432
75 운영관리 데이터베이스를 다른 머신으로 옮기는 방법 admin 2008.11.21 27674
74 운영관리 64bit OS 에서 사용가능한가요? admin 2008.11.21 17415
73 운영관리 libjvm.so 찾지 못하여 서버 구동이 되지 않은 경우 admin 2008.11.21 26465
72 운영관리 SElinux 환경에서 CUBRID 사용하기 2 admin 2008.11.21 25505
71 운영관리 CUBRID 사용시 방화벽 설정 3 admin 2008.11.21 30998
70 운영관리 CUBRID 2008 설치시 주의사항 file seongjoon 2009.04.01 17499
69 운영관리 CUBRID 2008 삭제시 주의사항 file seongjoon 2009.04.01 15288
68 운영관리 CSQL 에서 한글을 입력하는 방법 Prototype 2009.04.01 19350
67 운영관리 큐브리드매니져를 이용한 데이터베이스 자동 백업 남재우 2009.04.01 19052
66 운영관리 데이터베이스 볼륨 자동 증가 설정 남재우 2009.04.01 18807
65 운영관리 CUBRID 2008 삭제시 제어판에서 삭제되지 않을시 해결법 file seongjoon 2009.04.13 15892
64 운영관리 막무가내 DBA의 DISK 장애 대처 정병주 2009.04.16 20444
63 운영관리 CM이 아닌 서버(console)상의 쿼리 결과값을 저장하는 방법 cubebridge 2009.05.19 20200
62 운영관리 TIME_TO_KILL과 SESSION_TIMEOUT에 대한 정리 cubebridge 2009.05.27 13191
61 운영관리 csql 데이터 입력방법 정만영 2009.06.09 213342
60 운영관리 Broker_log_top 결과 분석 방법 cubebridge 2009.06.18 11560
59 운영관리 큐브리드 백업방법 정만영 2009.06.18 24564
58 운영관리 큐브리드 사용포트 정리 3 정만영 2009.06.19 29778
Board Pagination Prev 1 2 3 4 Next
/ 4

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales