기술 정보
home
채널 소개
home

인덱스 범위 벗어난 접근 시도_15111 에러

문서 유형
장애 해결
분야
패치/업그레이드
키워드
ndv
통계수집
히스토그램
적용 제품 버전
6FS07
1 more property

현상

배열이나 컬렉션에서 인덱스 범위를 벗어난 접근이 시도되어 15111 에러가 발생합니다.
해당 에러는 특히 PL/SQL, Tibero PSM, 프로시저/함수 내부에서 발생 가능성이 높습니다.
예) 배열의 크기가 10이나, 11번째 요소에 접근 시 발생
참고
THROW. ec=ERROR_PSM_SUBSCRIPT_OUTSIDE_LIMIT(-15111) [ Subscript is out of range. ]

원인

기존 수집된 통계가 존재하는 상황에서 통계 수집 시 오차가 발생하여 bucket cnt를 특정 Column에 unique 값이 얼마나 존재하는지를 의미하는 Number of District values(이하 NDV)로 오인하여 해당 현상이 발생합니다.
주의
NDV와 bucket 개수가 일치하지 않는 경우, 데이터베이스가 데이터 분포를 잘못 해석할 수 있습니다. 이로 인해 비효율적인 쿼리 실행 계획이 생성되어 DBMS 성능에 영향을 미칠 수 있습니다.
NDV가 실제 bucket count 보다 큰 경우 데이터의 분포를 과소평가하여, 불필요하게 비효율적인 쿼리 실행 계획이 생성될 수 있습니다.
NDV가 실제 bucket count 보다 작은 경우 데이터의 분포를 과대평가하여, 옵티마이저가 쿼리 비용을 부정확하게 추정할 수 있습니다.
참고
아래 쿼리를 이용해 NDV와 bucket count가 다른 히스토그램을 조회함으로써 정상 여부를 확인할 수 있습니다.
select HH.hist_head_id, HH.ndv, H.cnt, H.mx from (select dhh.hist_head_id, dhh.distinct_cnt ndv from sys._dd_hist_head dhh) HH, (select count(dh.bucket) cnt, max(dh.bucket) mx, dh.hist_head_id from sys._dd_histogram dh group by dh.hist_head_id) H where HH.hist_head_id = H.hist_head_id and HH.ndv != H.cnt and H.mx > 256;
SQL
복사
쿼리의 결과값이 0 rows( bucket count와 ndv가 일치함) 가 아닐 시, 비정상입니다.
이 때, 히스토그램은 데이터의 분포를 정확히 모델링하여 데이터베이스가 효율적인 쿼리 실행 계획을 수립하도록 돕는 중요한 역할을 합니다.

해결

통계수집 중 오차로 인해 bucket cnt를 NDV로 오인하는 문제 해소할 수 있도록, 패치를 적용해 해결합니다.(적용패치: FS07_CS_210768a)
수집된 bucket_cnt가 256 초과면 반드시 frequency로 수집된 것이므로, 기 수집된 ndv와 bucket_cnt간 오차가 있더라도 기존의 ndv를 신뢰하며 수집할 수 있도록 합니다.
주의
티맥스티베로에서 제공하는 기술지원을 통해 패치를 적용합니다.