프로그래밍/3. ORACLE

[오라클/ORACLE] 오라클 메모리

핫호빵 2013. 4. 22.
반응형

 

오라클 메모리는 크게 SGA(System Global Area)와 PGA(Program Global Area)로 구분할 수 있습니다.

 

SGA - 모든 사용자가 공유하는 메모리

PGA - 각 사용자가 개별적으로 사용하는 메모리

 

오라클은 디스크에서 읽어온 데이터를 메모리에 보관한 다음에 데이터를 조회하거나 변경하는 작업을 수행합니다. 이때 데이터가 저장되는 메모리가 SGA입니다.

 

SGA는 5개의 세부영역(공유 풀(Shared Pool), 데이터 버퍼 캐쉬(Data Buffer Cache), 리두 로그 버퍼(Redo Log Buffer), 대형 풀(Large Pool) 및 자바 풀 (Java Pool))로 구분할 수 있습니다.

 

오라클 서버의 SGA 설정값을 확인하는 방법은 다음과 같습니다.

 

SHOW SGA

SELECT * FROM V$SGA;

SELECT * FROM V$SGASTAT;

SELECT * FROM V$SGA_DYNAMIC_COMPONET


 

 

 

 

 

SGA의 5개 영역을 간략하게 알아보면 다음과 같습니다.

 

공유 풀(Shared Pool)

 

SGA를 관리하기 위한 메타정보, 실행된 SQL, SQL 분석 및 실행정보 , 오라클 오브젝터 정보가 저장되어 있는 메모리 공간. 공유 풀은 또 다시 고정 영역, 동적 영역으로 나누어 지며 고정 영역은 오라클 서버에서 자동으로 설정하며, 사용자가 설정할 수 없다. 동적영역은 라이브러리 캐쉬와 딕셔너리 캐쉬로 구분되며 SHARED_POLL_SIZE 파라메터 수정을 통해서 사용자가 설정할 수 있다.

 

  • 라이브러리 캐쉬는 접속한 유저가 실행한 SQL, SQL 분석정보, SQL 실행 계획,  Recursive SQL 정보가 저장됩니다.

  • 딕셔너리 캐쉬는 테이블, 인덱스, 함수 및 트리거 등 오라클 오브젝트 정보 및 권한 등의 정보가 저장됩니다.

 

데이터 버퍼 캐쉬(Data Buffer Cache)

 

오라클이 데이터를 읽고 수정하기 위해 디스크에 존재하는 데이터를 읽어 저장하는 메모리 공간, 디스크에서 읽고 기록하는 것보다 메모리에서 읽고 기록하는 속도가 빠르기 때문에 데이터베이스 성능 향상을 위해 가급적 필요한 데이터를 디스크 I/O가 없는 메모리에서 읽는 것이 좋다.

 

리두 로그 버퍼(Redo Log Buffer)

 

Oracle에서는 Object 나 DML 작업에 의해서 데이터가 변경되는 경우에 변경이력을 리두로그버퍼 메모리에 저장한다. 데이터 복구를 위해서는 Redo Logg Buffer에 저장되는 로그가 반드시 필요하다. 위의 그림에서 Redo Buffers가 리두 로그 버퍼의 메모리량이다.

 

대형 풀 (Large Pool)

 

앞에서 설명한 3개의 메모리 영역은 필수 SGA인 반면 대형풀과 자바풀은 필수 메모리 영역은 아니고, 지정을 하면 공유 풀의 바하를 감소시키는 역활을 한다. 대형풀에 저장되는 정보는 UGA 영역, RMAN 정보, 병렬프로세스 정보, I/O 슬래이브 프로세스 정보가 있다. LARGE_POOL_SIZE로 지정이 가능합니다.

 

자바 풀 (Java Pool)

 

자바 명령을 구문 분석할 경우 사용하는 메모리이므로 자바를 설치하고 사용할 경우 지정해 주면 좋다. JAVA_POOL_SIZE 파라메터로 지정이 가능하다.

 

 

반응형

댓글