구조

SGA (System Global Area)
정의
- SGA 컴포넌트(한 오라클 DB 인스턴스의 데이터를 가지고 관리하는 공유 메모리 구조)의 집합
- 모든 서버와 백그라운드 프로세스에 의해 공유된다
- 데이터를 디스크로부터 읽어 메모리로 적재, read/write/update/delete 하는데 활용되는 공간
- SGA에 저장된 데이터 예시: 캐시 데이터 블록, shared SQL 영역
구성
- 공유 풀(Shared Pool)
- 고정 영역(Permanent Area): SGA를 관리하는 파라미터 정보
- 동적 영역(Dynamic Area): 라이브러리 캐시(SQL, Parse Tree, 실행 계획 저장), 데이터 딕셔너리 캐시(Oracle Object 정보 저장)
- 데이터 버퍼 캐시(Data Buffer Cache): 디스크에서 읽어온 데이터를 저장하는 공간
- 서버 프로세스: 디스크 → 데이터 버퍼 캐시로 데이터 저장하는 프로세스
- DBWR(Database Writer) Background 프로세스: 데이터 버퍼 캐시 → 디스크로 데이터 기록하는 프로세스
- Redo Log Buffer: 데이터 변경에 대한 로그 저장 영역
- LGWR(Log Writer): 로그 버퍼 내용을 로그 파일에 기록하는 프로세스
- 대형 풀(Large Pool), 자바 풀(Java Pool)
PGA (Program Global Area)
정의
- 서버 프로세스에 대한 데이터를 가지고 관리하는 메모리 영역
- 서버 프로세스가 시작될 때 오라클 DB가 생성하는 비공유 메모리
- 유저로부터 요청받은 작업 처리하는데 사용된다.
- SGA와 다르게 한 서버 프로세스당 하나의 PGA 할당됨
- PGA 접근은 서버 프로세스만 가능
- 백그라운드 프로세스들도 자신들만의 PGA를 할당받는다.
- total instance PGA memory: 한 오라클 데이터베이스의 모든 백그라운드/서버 프로세스들의 총 PGA 메모리
구성
- SQL Work Area: 해시 조인, 비트맵 머지, 정렬 작업(order by, group by) 수행 시 사용되는 공간, 메모리 부족 시 디스크 공간 활용함
- 세션 정보(Session Information): 서버 ↔ 유저 연결 정보
- 커서 상태 정보(Cursor State)
- 변수 저장 공간(Stack Area): Bind 변수 저장
- User Process → Server Process → PGA로 할당
관련 에러
ORA-04036: 인스턴스에 사용된 PGA 메모리가 PGA_AGGREGATE_LIMIT를 초과합니다.
출처