대상 버전
모든 버전
본 에러메시지의 경우, 알티베이스 버전에 따라 동일한 오류 원인에 대해 이 에러가 발생할 수도 있고 다른 에러가 발생할 수도 있습니다.
뿐만 아니라 본 에러메시지에 대해 알티베이스 버전에 따라 오류 원인도 다를 수 있습니다.
증상
# 예제
# 5.5.1 이상 버전에서 수행 결과
# 5.3.3 버전에서 수행 결과
원인
다음과 같이 altierr 유틸리티를 이용하여 해당 에러에 대한 설명을 확인할 수 있습니다.
$ altierr 0x0109D
0x0109D ( 4253) idERR_ABORT_InsufficientMemory Insufficient memory
# *Cause: Insufficient memory
# *Action: Please make sure that the system has enough available memory.
메모리테이블에 대해 order by, group by 등의 쿼리를 수행할 때 temporary 영역을 사용하는데, temporary 영역도 메모리 공간을 사용합니다.
알티베이스 서버가 쿼리 수행을 위해 메모리 할당 요청을 했는데 EXECUTE_STMT_MEMORY_MAXIMUM 속성값에 의해 에러를 리턴받은 경우 본 에러가 발생합니다.
해결 방안
다음 프로퍼티 값을 늘려주어야 합니다.
EXECUTE_STMT_MEMORY_MAXIMUM
기본값: 1G
단위는 Gigabyte이며 질의 처리 시에 실행 단계에서 메모리를 이 속성값 이상으로 사용할 경우 에러 처리한다.
이 속성값은 불필요한 메모리의 증가를 방지하기 위해 최대값을 설정한다.
1. 쿼리 수행 중 해당 에러가 발생했다면 아래의 SQL문으로 "EXECUTE_STMT_MEMORY_MAXIMUM" 프로퍼티 값을 확인합니다.
2. ALTER문으로 해당 프로퍼티 값을 적절히 늘려줍니다. (단위는 byte입니다.)
다음은 2G로 설정하는 예제입니다.
3. 위 명령어는 수행 이후 서버 전체에 적용되지만 알티베이스를 재구동하면 프로퍼티파일의 설정값으로 적용됩니다.
따라서 영구적으로 적용을 위해서는 프로퍼티파일에도 해당 프로퍼티 값을 변경해야 합니다.
$ALTIBASE_HOME/conf/altibase.properties 파일에서 해당 프로퍼티의 값을 위와 동일하게 변경해 주세요.
참고
1. EXECUTE_STMT_MEMORY_MAXIMUM 프로퍼티는 최대값을 지정하는 프로퍼티로, 미리 설정값만큼 메모리를 할당받는 것은 아닙니다.
그러나 설정값만큼 메모리사용량이 증가할 수 있으므로 설정 시 주의를 요합니다.
따라서 미리 크게 설정하기보다 경험적으로 적절히 늘려주시기를 권장합니다.
2. "Insufficient memory" 에러는 여기에서 설명한 케이스 외에도 다양한 메모리 할당 실패 에러일 수 있습니다.
따라서 위 해결방안으로 문제가 해결되지 않는다면 알티베이스 기술지원으로 연락주세요.