by 구루비 REDO LOG BUFFER SHARED POOL LARGE POOL LOG_BUFFER SHARED_POOL_SIZE SHARED SQL AREAS JAVA POOL STREAMS POOL [2006.04.10]
리두 로그 버퍼는 데이터베이스에서 일어난 모든 변화를 저장하는 메모리 공간 입니다.
리두 로그 버퍼에 저장된 리두 항목들은 LGWR에 의해 데이터베이스 복구에 사용되는 온라인 리두 로그 파일에 저장됩니다.
LOG_BUFFER 파라미터로 Redo Log Buffer의 크기를 결정 합니다.
리두 정보는 항상 실제 변경작업보다 먼저 보관되어야 어떤 상황에서도 복구가 가능해집니다.
따라서 트랜잭션을 수행하는(데이터베이스 블록에 변경을 가하는) 프로세스는 우선 자신의 메모리 영역 내에서 수행하고자 하는 작업에 대한 리두 레코드를 만들며, 이를 먼저 로그버퍼에 기록하고 난 후에 실제 버퍼블록에도 리두 레코드에 담긴 내용을 따라 적용하게 됩니다.
또한 같은 이유로 오라클은 변경된 버퍼 캐쉬 블록을 디스크에 기록하기 전에 먼저 관련된 로그버퍼를 로그파일에 기록하는 작업을 처리하게 됩니다.
Shared pool은 라이브러리 캐시(Library Cache), 딕셔너리 캐시(Dictionary Cache), 컨트롤 구조(Control Structures)를 포함하는 SGA의 영역 입니다.
Shared Pool은 하나의 데이터베이스에 행해지는 모든 SQL 문을 처리하기 위하여 사용 됩니다.
Shared Pool은 문장을 실행하기 위해 그 문장과 관련된 실행 계획과 구문분석 정보가 들어 있습니다.
Shared Pool의 사이즈는 SHARED_POOL_SIZE 파라미터 값에 의해 결정 되는데 기본값은 32Bit Flatform에서는 8MB, 64Bit 환경에서는 64MB 입니다.
라이브러리 캐쉬는 사용자가 요청한 SQL 문장을 Server Process가 여러 단계를 거쳐 작업할 때 사용하는 작업 공간 입니다.
라이브러리 캐쉬는 Shared SQL 영역과 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 문장을 저장하고 공유 합니다.
- 파싱 및 컴파일 된 프로그램 및 프로시져(함수, 패키지, 트리거)가 저장 됩니다
Dictionary Cach는 데이터베이스 테이블과 뷰에 대한 정보, 구조, 사용자등에 대한 정보가 저장되어 있습니다.
Oracle은 SQL문을 parsing 하는 과정에서 Data Dictionary를 빈번하게 Access 합니다. 이렇게 자주 Access되는 Data Dictionary 정보를 Dictionary Cache에 저장하여 관리 합니다.
Dictionary Cache는 모든 Oracle User Process에 의해 공유 됩니다.
SGA를 구성하는 Option 성격의 메모리이며 대용량 메모리를 할당 할 때 사용 합니다.
아래와 같은 목적으로 대용량 풀을 사용 할 수 있습니다.
- I/O 서버 프로세스 및 Shared Server(8i버전까지는 MTS)와 Oracle XA(Middleware를 이용한 효과적인 Resource 관리)에 대한 세션 메모리를 제공.
- Oracle 백업 및 복원 작업에 대한 대용량 메모리 할당.
Shared Server(8i버전까지는 MTS) 기능을 사용하지 않는다면 Large Pool을 최소로 설정 합니다.
LARGE_POOL_SIZE 파라미터로 Large pool의 크기를 설정 할 수 있습니다.
Oracle JVM에 접속해 있는 모든 세션에서 사용하는 자바코드가 사용하는 메모리 영역을 말합니다.
Java Pool은 JAVA_POOL_SIZE 파라미터로 크기를 설정 할 수 있습니다.
Oracle 10g 부터는 Streams pool 이라는 새로운 유형의 풀을 지원합니다.
오라클 스트림(다른 DB로 데이터전달) 에서 사용하는 메모리 영역 으로 STREAMS_POOL_SIZE 파라미터로 크기를 설정 합니다
- 강좌 URL : http://www.gurubee.net/lecture/1888
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.