[Oracle]ORA-27102: out of memory 오류 해결 방법
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;