목차

Database Buffer Cache

정의

  1. Database Buffer Cache는 Datafile들로부터 읽은 Data block의 복사본을 담고 있는 SGA의 한 영역이다.
  2. Oracle Instance에 동시 접속한 모든 User Process는 Database Buffer Cache에 대한 Access를 공유한다.
  3. Database Buffer Cache는 아직 디스크에 완전히 쓰여지지 않는 수정된 데이터를 보유할 수 있다.
  4. LRU(Least Recently Used) 알고리즘에 의해
    가장 오래전에 사용된 것을 디스크에 저장하고 메모리에는 가장 최근에 사용된 데이터를 저장함으로써,
    디스크 I/O를 줄이고, 데이타베이스 시스템의 성능을 향상시킨다.
  5. DBWR(Database Writer Process)에서 관리된다.
  6. Free buffer는 오라클 서버 프로세스에 할당되어 사용되고,
    사용후 Dirty Buffer가 된 Buffer들은 DBWR에 의해 디스크에 쓰여진 후 다시 Free Buffer가 되어
    오라클 서버 프로세스에 의해 재사용되는 작업을 반복하게 된다.

Redo Log Buffer

  1. Redo Log Buffer는 데이터베이스의 일어난 모든 변화를 저장하는 메모리 공간입니다.
  2. Redo Log Buffer에 저장된 리두 항목들은 LGWR에 의해 데이터베이스 복구에 사용되는 Online Redo Log File에 저장됩니다.
  3. LOG_BUFFER 파라메터로 Redo Log Buffer의 크기를 정합니다.
  4. Redo 정보는 항상 실제 변경작업보다 먼저 보관되어야 어떤 상황에서도 복구가 가능합니다.
    따라서 트랜잭션을 수행하는(데이터베이스 블록에 변경을 가하는) 프로세스는 우선 자신의 메모리 영역 내에서 수행하고자 하는 작업에 대한 Redo Record에 담긴 내용을 따라 적용하게 됩니다.
    또한 같은 이유로 오라클은 변경된 Buffer Cache Block을 디스크에 기록하기 전에 먼저 관련된 로그버퍼를 로그파일에 기록하는 작업을 처리합니다.

Shared Pool

정의

  1. Shared Pool은 Library Cache, Dictionary Cache, Control Structures를 포함하는 SGA의 영역 입니다.
  2. Shared Pool은 하나의 데이터베이스에 행해지는 모든 SQL 문을 처리하기 위하여 사용됩니다.
  3. Shared Pool은 문장을 실행하기 위해 그 문장과 관련된 실행계획과 구문분석 정보가 들어가 있습니다.
  4. Shared Pool의 사이즈는 SHARED_POOL_SIZE 파라메터 값으로 결정된다.

Library Cache

  1. Library Cache는 사용자가 요청한 SQL문장을 Server Process가 여러단계를 거쳐 작업을 할때 사용하는 작업공간이다.
  2. Library Cache는 Shared Pool 영역과 PL/SQL 영역으로 나누어 볼 수 있다.
  3. 오라클의 모든 SQL은 Shared SQL 영역과 Private SQL 영역에서 수행된다.
    만약 두명의 사용자가 같은 SQL문을 사용할 경우 Shared SQL 영역을 재사용하여 자원을 절약합니다.
    그리고 사용자는 Private SQL 영역에 복사본을 보유하게 된다.
Shared SQL Areas 공유 SQL 영역에는 SQL문에 대한 텍스트, 파스 트리, 실행계획 등을 저장하고 있다.
동일한 문장이 다음번에 실행되면 Shared SQL 영역에 저장되어 있는 실행계획과 파스트리를 그대로 이용하기 때문에 SQL문장의 처리속도는 향상된다.
Shared PL/SQL Areas 가장 최신에 실행한 PL/SQL 문장을 저장하고 공유한다.
파싱 및 컴파일 된 프로그램 및 프로시져(Function,Package,Triger)가 저장된다.

Dictionary Cache

  1. Dictionary Cache는 데이터베이스 테이블과 뷰에 대한 정보, 구조, 사용자 등에 대한 정보가 저장된다.
  2. 오라클은 SQL문을 Parsing하는 과정에서 Data Dictionary를 빈번하게 Access합니다.
    즉, 자주 Access되는 Data Dictionary 정보를 Dictionary Cache에 저장하여 관리합니다.
  3. Dictionary Cache는 모든 Oracle User Process에 의해 공유 됩니다.

Large Pool

  1. SGA를 구성하는 메모리으로 대용량 메모리를 할당할때 사용한다.
  2. Shared Server를 사용하지 않는다면 Large Pool을 최소로 설정한다.
  3. LARGE_POOL_SIZE 파라메터로 Large Pool의 크기를 설정할 수 있다.
  4. 이 옵션 영역은 다양한 서버 프로세스의 큰 I/O 요청을 버퍼링하는 데 사용

사용목적(대용량 풀)

  1. I/O 서버 프로세스 및 Shared Server와 Oracle XA(Middleware를 이용한 효과적인 Resource 관리)에 대한 세션 메모리를 제공한다.
  2. Oracle 백업 및 복원 작업에 대한 대용량 메모리 할당에 이용된다.

Java Pool

  1. Oracle JVM(Java Virtual Machine)에 접속해 있는 모든 세션에서 사용하는 자바코드가 사용하는 메모리 영역이다.
  2. Java Pool은 JAVA_POOL_SIZE 파라메터로 크기를 설정한다.

Streams Pool

  1. 10g 부터 나타난 풀 개념이다.
  2. 오라클 스트림(다른 DB로 데이터 전달)에서 사용하는 메모리 영역으로 STREAMS_POOL_SIZE 파라메터로 크기를 설정한다.

Result cache(11gNF)

  1. Result cache는 쿼리 결과를 버퍼링합니다.
  2. Result cache에 저장되는 결과에 대해 데이터베이스는 쿼리를 다시 실행하는 대신에 Result cache에서 결과를 반환합니다.
  3. 이 SGA 구성 요소는 자주 수행되는 쿼리의 실행 속도를 향상시킴
  4. object가 변경이되면 invalid 됨