반응형
이 오류는 주로 프로세스 메모리가 부족하여 특정 크기의 메모리를 할당할 수 없을 때 발생
Oracle 서버 프로세스가 PGA(Process Global Area)에서 메모리를 요청했으나, 사용 가능한 메모리가 부족하면 발생
🔍 원인
- PGA 메모리 부족
- Oracle의 PGA 메모리 할당이 비효율적으로 설정됨
- PGA_AGGREGATE_LIMIT 또는 PGA_AGGREGATE_TARGET 값이 너무 낮음
- OS 레벨 메모리 부족
- 서버 전체의 사용 가능한 RAM이 부족
- 스왑 공간이 부족
- 비정상적으로 많은 메모리 사용
- 대량의 데이터 정렬(SORT) 또는 해시 조인이 발생할 때
- PL/SQL 테이블(collection)이나 커서에서 과도한 메모리 사용
- 백그라운드 프로세스가 메모리를 과도하게 점유
🛠 해결 방법
1️⃣ PGA 메모리 설정 확인 및 조정
sql
SHOW PARAMETER PGA_AGGREGATE_TARGET; SHOW PARAMETER PGA_AGGREGATE_LIMIT;
PGA_AGGREGATE_TARGET 값을 증가 (예: 2GB → 4GB)
sql
ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 4G SCOPE=BOTH;
PGA_AGGREGATE_LIMIT 값을 증가 (예: 4GB → 8GB)
sql
ALTER SYSTEM SET PGA_AGGREGATE_LIMIT = 8G SCOPE=BOTH;
2️⃣ OS 메모리 확인 및 증가
- 현재 사용 가능한 메모리 확인
free -m
- 스왑 공간이 부족하다면 추가
sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile
3️⃣ 비정상적인 메모리 사용 세션 확인
- 메모리를 많이 사용하는 세션 찾기
sql
SELECT SID, SERIAL#, CATEGORY, ALLOCATED, USED FROM V$PROCESS_MEMORY WHERE ALLOCATED > 100000000; -- 100MB 이상 사용 중인 세션
- 문제가 되는 세션 종료
sql
ALTER SYSTEM KILL SESSION 'SID,SERIAL#' IMMEDIATE;
4️⃣ 실행 계획 확인 및 튜닝
- SQL이 과도한 정렬(SORT)이나 해시 조인을 유발하는지 확인
EXPLAIN PLAN FOR <SQL문>; SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
- 적절한 인덱스 추가 또는 SQL 튜닝 수행
반응형
'DB' 카테고리의 다른 글
[Database] ROWNUM 이란? (0) | 2025.03.19 |
---|---|
[Database] SPOOL 개념과 사용법 (0) | 2025.03.19 |
[Database]Oracle XE TNS 오류 해결 방법 (TNS-12550, TNS-12560, TNS-00252) (0) | 2025.03.05 |
[Database]Oralce Shirink (0) | 2025.03.05 |
[Database]Global Index VS Local Index (0) | 2025.03.05 |