2009-04-01 2 views
0

우리 응용 프로그램에서 저장된 procs의 소수를 실행할 때 위의 오류가 나타납니다. 우리가 얻는 실제 오류는 sqlcode = -930이며, db2 문서에 따르면 다음과 같습니다. '명령문을 처리 할 수있는 충분한 저장 영역이 없습니다.'저장된 procs를 실행할 때 db2 저장소 오류

질문 : 이러한 procs에 사용할 수있는 저장 용량을 어떻게 늘릴 수 있습니까? 다른 사람에게이 오류가 발생 했습니까? 그렇다면 해결책을 찾았습니까?

덕분에 당신은 당신이 사용하고있는 플랫폼으로 대답하지 않았으므로

+0

해결 방법과 문제점이 해당 플랫폼에 의존하기 때문에 플랫폼 (LUW, iSeries 또는 System z)을 지정하기 위해 db2에 태그를 지정하는 것이 좋습니다. – paxdiablo

답변

1

, 나는 우선 AIX에 자상 할게요.

특정 원인을 찾으려면 db2diag.log를 봐야하지만 일반적으로 AIX에는 공유 메모리 세그먼트가 부족해지기 때문입니다.

AIX에는 총 16 개의 공유 메모리 세그먼트가 있으며 그 중 7 개는 데이터베이스에 사용 가능합니다. 데이터베이스에서 실제로 사용하는 양은 문제 해결 가이드에서 찾지 않고도 기억하기에 너무 복잡한 수식을 사용하여 계산할 수 있습니다.

그러나 데이터베이스가 6 개의 세그먼트를 사용하여 하나만 남겨 두는 실제적인 가능성이 있습니다. 나는 그런 상황이 발생했을 때 메모리 매핑 된 I/O 요청이 저장 프로 시저와 동시에 발생하는 것을 보았습니다.

두 가지 모두 공유 메모리 세그먼트가 필요하며 I/O가 처음 시작되면 표시되는 것처럼 저장 프로 시저가 실패합니다.

  • 비활성화 메모리 매핑 된 I/O :이 문제를 해결하는

    방법 중 하나 이상을 수행하여 세그먼트를 확보한다.

  • 데이터베이스에서 세그먼트 사용을 줄이십시오. 수식이 필요하지만 버퍼 풀, 힙 크기 및 잠금 목록이 필요합니다.
  • 필요없는 경우 intra_parallel을 해제하십시오.
관련 문제