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 오류가 기록된다.


  1. 큐브리드 마스터 소켓 디렉토리 변경방법

  2. Windows 환경에서 JAVA SP 사용 utf-8 한글 깨짐 해결

  3. INSTR함수 사용하기

  4. group_concat(문자열 그룹처리) 함수 사용하기

  5. 두 datetime 연산결과를 "?일 ?시:?분:?초"로 표시하기

  6. Invalid XASL tree node content 에러

  7. ORACLE 테이블 및 컬럼 COMMENT 일광등록 스크립트

  8. Windows에서 32bit 버전의 PHP 설치 후 CUBRID와 연동 실패 시 해결 방법

  9. 큐브리드 매니저 호스트 접속 시 JDBC 드라이버 찾을 수 없는 오류 해결

  10. 스키마 및 인덱스 선언에 따른 최대 용량 산정을 위한 ROW SIZE 확인

  11. Oracle UTL_ENCODE.TEXT_ENCODE를 CUBRID로 변환하기

  12. 테이블 리스트 취합 SQL

  13. 산술 연산 결과를 피젯수 또는 젯수의 자리 수에 맞춰 보자.

  14. 테이블 컬럼 변경 및 추가

  15. CMT를 이용하여 원본 특정 테이블의 일부 데이터만 가져와 대상 테이블에 넣기

  16. FOR UPDATE

  17. 'Has been interrupted.' CUBRIDException 발생

  18. 각 테이블 PK 유무 확인 쿼리문

  19. ORACLE TRIGGER를 CUBRID TRIGGER로 변환하기

  20. CUBRID DB에서 critical section 정보 출력하기

Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 14 Next
/ 14

Contact Cubrid

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