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
번호 분류 제목 글쓴이 날짜 조회 수
119 응용개발 ODBC 드라이버를 이용한 Prepare 사용하기. seongjoon 2009.06.16 19591
118 마이그레이션 MySQL의 limit 명령어 처리 1 admin 2008.11.21 32685
117 응용개발 MySQL의 Blob타입을 CUBRID로 변환하기 cubebridge 2009.11.18 18856
116 마이그레이션 MySQL에서 사용하는 스키마 변환시 주의 사항 정만영 2012.03.02 13256
115 마이그레이션 MySQL에서 CUBRID로 갈아탈 때 알아야 할 것 cubebridge 2012.11.13 22616
114 마이그레이션 MySQL+XE를 CUBRID+XE로 운영하기 – mysqldump파일과 CMT사용 file cubebridge 2012.11.13 23071
113 마이그레이션 MySQL 테이블 크기 조사하기-공유 주현 2015.12.31 6203
112 CUBRID 매니저 MS949 charset을 CM에서 선택할 수 없는 현상 조치방법 cubebridge 2010.05.17 20543
111 질의작성 MERGE INTO 사용 예제 ( INSERT, UPDATE문을 1개의 쿼리로 실행 ) 권호일 2015.05.01 21252
110 질의작성 LIKE 검색에서 INDEX_SCAN사용 하기 file janus 2009.04.17 21809
109 CUBRID 매니저 Java SP사용시 JNI_CreateJavaVM 에러메시지 해결 방법 file seongjoon 2009.07.15 32043
108 응용개발 Java Data Type의 CUBRID Data Type으로의 변경 Tip cubebridge 2009.06.16 18032
107 응용개발 JDBC 커넥션 스트링에 UTF-8 명시하는법 Prototype 2009.07.03 19017
106 응용개발 JDBC 사용시 SQL 로깅 - p6spy 사용 1 웁쓰 2009.07.01 35999
105 기타 JBoss 사용 시 statement pooling 설정 손승일 2016.12.16 2924
104 질의작성 JAVA_SP를 이용해서 정규표현식을 이용해서 치환을 하자. file 성진 2017.10.10 1325
103 응용개발 JAVA SP를 통해 다른 데이터베이스 연결하는 경우 잊지 말자. 손승일 2009.12.16 17975
102 응용개발 JAVA SP 사용 시 로그 처리 방법 손승일 2015.06.03 8574
» 운영관리 Invalid XASL tree node content 에러 손승일 2016.04.26 4477
100 질의작성 Integer 컬럼의 결과에 + or – 연산을 할 때 주의해야 할 점 웁쓰 2009.12.31 13493
Board Pagination Prev 1 ... 4 5 6 7 8 9 10 11 12 13 14 Next
/ 14

Contact Cubrid

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