Table of Contents |
---|
버전
...
ALTIBASE HDB 모든 버전
원인
...
ALTIBASE 메모리 테이블스페이스의 경우는 모든 메모리 테이블스페이스의 합산이 $ALTIBASE_HOME/conf/altibase.properties 에서 MEM_MAX_DB_SIZE를 초과할 수 없습니다. 이 에러메시지는 모든 공간이 소진되어 발생합니다.
MEM_MAX_DB_SIZE란?
...
- 물리 메모리에 저장되는 메모리 테이블스페이스(메모리 테이블 또는 메모리 데이터)로 사용할 수 있는 최대 메모리 크기를 의미합니다.
- 모든 메모리 테이블스페이스를 합한 전체 사용량에 대한 제약입니다.
- 메모리 테이블스페이스 각각이 사용할 수 있는 최대 크기가 아닙니다.
- 메모리 테이블에 생성한 인덱스 크기는 포함되지 않습니다.
- 변경 트랜잭션 수행 시 발생하는 과거 데이터도 포함됩니다.
변경 트랜잭션이 수행될 경우 트랜잭션이 종료되기 전까지 과거 데이터를 유지하는데(MVCC기법), 메모리 테이블의 경우 메모리 테이블 내에 레코드의 복제본을 생성합니다. - 메모리 테이블스페이스 생성 시 최대값을 지정하지 않으면 MEM_MAX_DB_SIZE 설정 값만큼 자동 확장됩니다.
메모리 사용율 조회 방법
...
Code Block |
---|
set linesize 1024 set colsize 20 SELECT TO_CHAR(MEM_MAX_DB_SIZE/1024/1024, '999,999,999') ' MAX(M)', -- MAX(M) : MEM_MAX_DB_SIZE 설정 값 TO_CHAR(MEM_ALLOC_PAGE_COUNT*32/1024, '999,999,999') ' TOTAL(M)', -- TOTAL(M) : 메모리 테이블스페이스로 할당 된 전체 페이지 크기. 체크포인트 이미지 파일 크기를 의미하기도 함. TO_CHAR((MEM_ALLOC_PAGE_COUNT-MEM_FREE_PAGE_COUNT)*32/1024, '999,999,999') ' ALLOC(M)', -- ALLOC(M) : 메모리 테이블스페이스에서 사용하는 메모리 크기 (SELECT TO_CHAR(SUM((FIXED_USED_MEM + VAR_USED_MEM))/1024/1024, '999,999,999') FROM V$MEMTBL_INFO) ' USED(M)', -- USED(M) : ALLOC 중에서 데이터가 저장된 메모리 크기 TO_CHAR((((MEM_ALLOC_PAGE_COUNT-MEM_FREE_PAGE_COUNT)*32*1024)/MEM_MAX_DB_SIZE)*100, '99.99') 'USAGE(%)' -- USAGE(%) : MAX 대비 ALLOC 사용률 FROM V$DATABASE ; MAX(M) TOTAL(M) ALLOC(M) USED(M) USAGE(%) ------------------------------------------------------------------------------------------- 5,120 920 621 142 12.13 1 row selected. |
위의 조회 결과 ALLOC_SIZE가 MEM_MAX_DB_SIZE까지 도달하였을 때 'Too many pages are allocated' 에러가 발생 합니다.
조치 방법
...
아래 에러가 발생하지 않게 하기 위해서는 $ALTIBASE_HOME/conf/altibase.properties 에서 MEM_MAX_DB_SIZE 프로퍼티값을 늘려주셔야 합니다.
...
조치 이후에는 어떤 이유로 메모리 테이블스페이스의 사용량이 증가 하였는지 각 테이블 별 사용량의 조회나 대량 변경작업등이 발생하지 않았는지 확인하여 조치할 필요가 있습니다.
변경 방법
알티베이스 서버 중지
$ server stop
altibase.properties 파일 변경
알티베이스 서버 프로퍼티 파일($ALTIBASE_HOME/conf/altibase.properties) 에서 MEM_MAX_DB_SIZE 를 변경 후 저장합니다.
$
vi
$ALTIBASE_HOME
/conf/altibase
.properties
MEM_MAX_DB_SIZE = 2G
# MEM_MAX_DB_SIZE
알티베이스 서버 구동
$ server start
변경시 유의사항
...
디스크 공간
메모리 테이블스페이스는 백업 용도로 두 벌의 '메모리 체크포인트 이미지 파일'을 디스크에 저장합니다. 그래서 메모리 데이터 사용량보다 보다 두 배의 디스크 공간이 필요합니다.
...
예) MEM_MAX_DB_SIZE 가 60G 일 경우, 120G 의 디스크 공간이 필요.
사용자 환경 설정 (Linux/Unix)
ulimit -a 로 수행하여 아래 설정들이 OS 에서 허용하는 최대 값으로 설정되어 있는 지 확인해야 합니다.
max memory size
virtual memory
커널 파라미터(AIX, HP-UX)
AIX 경우 /etc/security/limits 파일 내용에서 data, rss, fsize등에 대해서 -1로 설정이 되어 있는지 확인합니다.
HP의 경우 kctune을 통해 maxdsiz_64bit 값이 충분히 크게 설정 되어 있는지 확인합니다. maxdsiz_64bit 값이 ALTIBASE의 property의 MEM_MAX_DB_SIZE값보다 작을 시에도 'Too many pages are allocated' 에러가 발생할 수 있으므로 root 계정으로 ALTIBASE의 property의 MEM_MAX_DB_SIZE보다 크게 설정해야 합니다.
Linux, SunOS 는 해당 없습니다.
참고자료
...