사용자 도구

사이트 도구


dbms:oracle:concept:sga

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

다음 판
이전 판
dbms:oracle:concept:sga [2008/02/13 20:33]
starlits 새로 만듬
dbms:oracle:concept:sga [2008/02/13 21:04] (현재)
starlits
줄 51: 줄 51:
 ALTER SYSTEM SET SHARED_POOL_SIZE=0; ALTER SYSTEM SET SHARED_POOL_SIZE=0;
 </code> </code>
 +
  
 ===== Database Buffer Cache ===== ===== Database Buffer Cache =====
 +
 +==== 정의 ====
 +  - Database Buffer Cache는 Datafile들로부터 읽은 Data block의 복사본을 담고 있는 SGA의 한 영역이다.
 +  - Oracle Instance에 동시 접속한 모든 User Process는 Database Buffer Cache에 대한 Access를 공유한다.
 +  - Database Buffer Cache는 아직 디스크에 완전히 쓰여지지 않는 수정된 데이터를 보유할 수 있다.
 +  - LRU(Least Recently Used) 알고리즘에 의해 \\ 가장 오래전에 사용된 것을 디스크에 저장하고 메모리에는 가장 최근에 사용된 데이터를 저장함으로써,\\  디스크 I/O를 줄이고, 데이타베이스 시스템의 성능을 향상시킨다.
 +  - DBWR(Database Writer Process)에서 관리된다.
 +  - Free buffer는 오라클 서버 프로세스에 할당되어 사용되고, \\ 사용후 Dirty Buffer가 된 Buffer들은 DBWR에 의해 디스크에 쓰여진 후 다시 Free Buffer가 되어 \\ 오라클 서버 프로세스에 의해 재사용되는 작업을 반복하게 된다.
 +
  
 ===== Redo Log Buffer ===== ===== Redo Log Buffer =====
 +  - Redo Log Buffer는 데이터베이스의 일어난 모든 변화를 저장하는 메모리 공간입니다.
 +  - Redo Log Buffer에 저장된 리두 항목들은 **LGWR**에 의해 데이터베이스 복구에 사용되는 **Online Redo Log File**에 저장됩니다.
 +  - LOG_BUFFER 파라메터로 Redo Log Buffer의 크기를 정합니다.
 +  - Redo 정보는 항상 실제 변경작업보다 먼저 보관되어야 어떤 상황에서도 복구가 가능합니다. \\ 따라서 트랜잭션을 수행하는(데이터베이스 블록에 변경을 가하는) 프로세스는 우선 자신의 메모리 영역 내에서 수행하고자 하는 작업에 대한 Redo Record에 담긴 내용을 따라 적용하게 됩니다. \\ 또한 같은 이유로 오라클은 변경된 Buffer Cache Block을 디스크에 기록하기 전에 먼저 관련된 로그버퍼를 로그파일에 기록하는 작업을 처리합니다.
 +
  
 ===== Shared Pool ===== ===== Shared Pool =====
 +
 +==== 정의 ====
 +  - Shared Pool은 Library Cache, Dictionary Cache, Control Structures를 포함하는 SGA의 영역 입니다.
 +  - Shared Pool은 하나의 데이터베이스에 행해지는 모든 SQL 문을 처리하기 위하여 사용됩니다.
 +  - Shared Pool은 문장을 실행하기 위해 그 문장과 관련된 실행계획과 구문분석 정보가 들어가 있습니다.
 +  - Shared Pool의 사이즈는 SHARED_POOL_SIZE 파라메터 값으로 결정된다.
 +
 +==== Library Cache ====
 +  - Library Cache는 사용자가 요청한 SQL문장을 Server Process가 여러단계를 거쳐 작업을 할때 사용하는 작업공간이다.
 +  - Library Cache는 Shared Pool 영역과 PL/SQL 영역으로 나누어 볼 수 있다.
 +  - 오라클의 모든 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 ====
 +  - Dictionary Cache는 데이터베이스 테이블과 뷰에 대한 정보, 구조, 사용자 등에 대한 정보가 저장된다.
 +  - 오라클은 SQL문을 Parsing하는 과정에서 Data Dictionary를 빈번하게 Access합니다. \\ 즉, 자주 Access되는 Data Dictionary 정보를 Dictionary Cache에 저장하여 관리합니다.
 +  - Dictionary Cache는 모든 Oracle User Process에 의해 공유 됩니다.
 +
 +
 +
  
 ===== Large Pool ===== ===== Large Pool =====
 +  - SGA를 구성하는 메모리으로 대용량 메모리를 할당할때 사용한다.
 +  - Shared Server를 사용하지 않는다면 Large Pool을 최소로 설정한다.
 +  - LARGE_POOL_SIZE 파라메터로 Large Pool의 크기를 설정할 수 있다.
 +
 +=== 사용목적(대용량 풀) ===
 +  - I/O 서버 프로세스 및 Shared Server와 Oracle XA(Middleware를 이용한 효과적인 Resource 관리)에 대한 세션 메모리를 제공한다.
 +  - Oracle 백업 및 복원 작업에 대한 대용량 메모리 할당에 이용된다.
  
 ===== Java Pool ===== ===== Java Pool =====
 +  - Oracle JVM(Java Virtual Machine)에 접속해  있는 모든 세션에서 사용하는 자바코드가 사용하는 메모리 영역이다.
 +  - Java Pool은 JAVA_POOL_SIZE 파라메터로 크기를 설정한다.
  
 ===== Streams Pool ===== ===== Streams Pool =====
dbms/oracle/concept/sga.1202902380.txt.gz · 마지막으로 수정됨: 2008/02/13 20:33 저자 starlits