기술 정보
home
채널 소개
home

OUT_OF_SHP 에러 해결 방법

문서 유형
장애 해결
분야
모니터링/점검
키워드
shared pool
SHP
2 more properties

현상

trace.log 파일에 아래와 같은 메시지와 함께 쿼리 수행에 실패합니다.
로그상 1.7MB를 할당을 받기위한 시도를 하나, 연속된 1.7MB 의 Shared Pool(이하 SHP) 공간 부족으로 수행에 실패하거나 에러가 발생합니다.
THROW. ec=ERROR_OUT_OF_SHP(-3002) [ Out of memory (unable to allocate 1874648 bytes of shared pool memory). ] (csr_id:720599) [shp_alloc.c:538:shp_malloc_dbginfo
SQL
복사

원인

다량의 리터럴쿼리는 Shared Pool(이하 SHP)에 다량의 ppc할당을 위한 메모리 점유-해지를 반복하며 메모리 단편화를 야기합니다. 또한 ALTER SYSTEM FLUSH PPC 명령어를 적용해도 해지하고자 하는 PP들의 Life Cycle이 끝나지 않는다면, 메모리 점유는 해지되지 않으므로 OUT_OF_SHP 에러가 발생할 수 있습니다.

해결

1. 쉘스크립트 작성

#!/bin/bash if [ $# != 2 ]; then echo "usage: max_chunk.sh [CHUNK] [DUMP]" exit fi max=0 for i in `grep $1 $2 | awk '{print $2}'` do if [[ "$i" -gt "$max" ]]; then max="$i" fi done max_m=`expr $max / 1024 / 1024` echo "the largest $1 chunk size in $2 is $max_m Mbytes"
SQL
복사
참고
편의성에 맞춰 max_m 변수 단위를 조정해 사용합니다.

2. SHARED DUMP 수행

SQL> ALTER SYSTEM DUMP SHARED POOL; System altered.
SQL
복사

3. DUMP 발생 확인

DUMP 발생 기본위치: $TB_HOME/instance/$TB_SID/dump/tracedump 또는 TRACE_DUMP_DEST 파라미터값 위치

4. 쉘스크립트 수행

# sh max_chunk.sh FREE tb_dump_3256_38_1404859.trc the largest FREE chunk size in tb_dump_3256_38_1404859.trc is 1 Mbytes
SQL
복사

5. 결과확인

쉘스크립트 수행 결과, 사용 가능한 SHP의 연속적인 공간은 1MB로, 단편화가 발생했음을 추정할 수 있습니다.