Database/Oracle

[Oracle]ORA-27102: out of memory 오류 해결 방법

봉의일상 2025. 2. 24. 19:58

Oracle 데이터베이스에서 ORA-27102: out of memory 오류가 발생하면, 이는 시스템의 공유 메모리(SGA)를 할당할 수 없거나, 운영 체제의 메모리 설정이 부족할 때 발생하는 문제입니다. 주로 Linux 및 Unix 환경에서 발생하며, shmmax, shmall 등의 설정과 관련이 있습니다.

1. 현재 시스템 메모리 상태 확인

먼저, 시스템의 현재 메모리 상태를 확인합니다.

free -m

또는 프로세스별 메모리 사용량을 확인합니다.

ps -eo pid,rss,vsz,args --sort=-vsz | head -10

2. 공유 메모리 설정 확인 및 변경 (Linux)

Linux에서 공유 메모리(shmmax, shmall) 설정이 부족하면 해당 오류가 발생할 수 있습니다. 현재 설정을 확인하려면 다음을 실행하세요.

cat /proc/sys/kernel/shmmax
cat /proc/sys/kernel/shmall

필요한 경우, 설정 값을 늘려야 합니다.

sudo sysctl -w kernel.shmmax=4294967296
sudo sysctl -w kernel.shmall=2097152

설정을 영구적으로 적용하려면 /etc/sysctl.conf 파일을 수정합니다.

sudo nano /etc/sysctl.conf

아래 내용을 추가 또는 수정합니다.

kernel.shmmax=4294967296
kernel.shmall=2097152

이후, 설정을 적용합니다.

sudo sysctl -p

3. HugePages 활성화 (Linux의 경우)

Oracle에서는 HugePages를 활성화하면 메모리 할당이 더 효율적으로 이루어집니다. 현재 설정을 확인하려면 다음 명령어를 실행하세요.

cat /proc/meminfo | grep HugePages

설정을 변경하려면 /etc/sysctl.conf 파일을 수정합니다.

vm.nr_hugepages=2048

이후, 설정을 적용합니다.

sudo sysctl -p

4. SGA 및 PGA 설정 조정

SGA 크기가 시스템 메모리보다 크다면 ORA-27102 오류가 발생할 수 있습니다. 현재 설정을 확인하려면 다음 SQL을 실행합니다.

SHOW PARAMETER sga_max_size;
SHOW PARAMETER sga_target;
SHOW PARAMETER pga_aggregate_target;

필요한 경우 SGA 및 PGA 크기를 줄입니다.

ALTER SYSTEM SET sga_max_size=2G SCOPE=SPFILE;
ALTER SYSTEM SET sga_target=2G SCOPE=SPFILE;
ALTER SYSTEM SET pga_aggregate_target=1G SCOPE=SPFILE;

변경 후, 데이터베이스를 재시작해야 적용됩니다.

shutdown immediate;
startup;

5. Oracle 프로세스 확인 및 정리

이미 실행 중인 Oracle 프로세스가 메모리를 과도하게 점유하고 있는지 확인합니다.

ps -ef | grep ora_

필요한 경우, 불필요한 프로세스를 종료합니다.

kill -9 <PID>

또는 안전하게 데이터베이스를 재시작합니다.

shutdown immediate;
startup;