*PGA(Program Global Area)의 구성요소

: 유저 프로세스를 처리하는 서버 프로세스에서 생성하여 사용하는 메모리 영역

1. 정렬 공간(Sort Area) : 정렬을 수행하기 위한 메모리 공간으로 부족하면 디스크를 이용함

2. 세션 정보(Session Information) : 추출된 결과값을 전달하기 위해 유저 프로세스의 세션 정보를 저장

3. 커서 상태 정보(Cursor State) : 해당 SQL의 파싱 정보가 저장되어 있는 주소를 저장

4. 변수 저장 공간(Stack Space) : SQL 문장에 바인드 변수 사용시 이를 저장하는 공간

>> 바인드 변수(Bind Variable) : 변수의 값이 달라져도 같은 문장으로 인식하여 하드 파싱을 줄임

*SGA(System Global Area)의 구성요소

: 디스크에서 읽혀진 데이터가 저장되고 그 데이터들이 읽혀지거나 변경되어지는 작업에 사용되는 공용 메모리 영역

1. 공유 풀(Shared Pool)

ⅰ)고정 영역 : 오라클이 SGA를 관리하는 메커니즘 및 오라클 파라미터 정보가 저장

ⅱ)동적 영역

①라이브러리 캐쉬(Library Cashe)

: 실행된 SQL, SQL에 대한 분석 정보 및 실행 계획이 저장

②데이터 딕셔너리 캐쉬(Data Dictionary Cashe, Row Cashe)

: 테이블, 인덱스,함수, 및 트리거 등 오라클 오브젝트 정보 및 권한 등의 정보가 저장

>>> 재사용을 위한 SQL의 조건

①대.소문자 일치

②띄어쓰기 일치

③오브젝트 소유자 일치

2. 데이터 버퍼 캐쉬(Data Buffer Cashe) : 디스크에서 읽혀진 데이터가 저장되는 메모리 공간

3. 리두 로그 버퍼(Redo Log Buffer) : 복구를 위해 데이터의 변경 로그를 저장

>>> 선 로그 기법(Ahead Logging) : 변경 작업 중 장애가 발생하여도 복구를 할 수 있게 로그를 먼저 기록

4. 대형 풀(Large Pool) : 필수 영역은 아니나 공유 풀의 부하를 감소시킴

ⅰ)UGA (User Global Area)영역 저장 : PGA의 부분 집합(정렬 공간, 세션 정보, 커서 상태 정보)

공유 서버(MTS) 환경에서는 UGA가 공유 풀을 사용하는데 이를 방지하기 위해 대형 풀을 설정

ⅱ)RMAN(Recover Manager)의 정보 저장

ⅲ)병렬 프로세스(Parallel Processing)의 정보 저장

설정하지 않으면 병렬 프로세스 메시지(PX MSG)는 공유 풀을 사용

ⅳ)I/O 슬래이브 프로세스의 정보 저장

5. 자바 풀(Java Pool) : 자바 명령 구문을 분석할 때 사용하는 메모리 공간

*공유 메모리 자동 관라(Automatic Shared Memory Management, ASMM) 10g

오라클 10g의 새로운 기능으로 오라클의 MMAN 백그라운드 프로세스가 업무 부하를 판단하여 공유 풀, 데이터 버퍼 캐쉬, 대형 풀 및 자바 풀의 크기를 조정하는 기능

장점 ①메모리 관리 요소 감소

②메모리 사용 효율 증가

③메모리 부족으로 인한 에러 감소

고려사항 ①MMAN이 관리하지 않는 SGA 구성요소

②사용자가 MMAN이 관리하는 MMAN에 의해 관리되는 SGA 영역의 최소값 설정