메모리 구조
- Instance에는 크게 2가지로 구성되어 있다. 메모리 영역(SGA, PGA)과 프로세스 영역(백그라운드 프로세스)
- Instance
- SGA(System Global Area)
- 단일 오라클 데이터 베이스 Instance의 데이터 및 제어 정보를 포함하는 SGA구성 요소라는 공유 메모리 구조 그룹.
- 데이터베이스 버퍼 캐시
- 2개의 list로 구성됨(Write List 와 LRU(Least Recently) List)
- 데이터베이스 버퍼 캐시의 사이즈 2K~32K(멀티 블록 사이즈, 표준 블록 사이즈, SYSTEM Tablespace, DB_BLOCK_SIZE 파리미터를 수정하여 변경가능)
- 파라미터 일 때(DB_2~32K_CACHE_SIZE) 블록과 캐쉬 사이즈 일 때(DB_BLOCK_SIZE=4096, DB_CACHE_SIE=1024M, DB_2K~8K_CACHE_SIE=512M)
- 추가적인 Multiple Buffer pools(Keep and Recycle - DB_KEEP_CACHE_SIZE and DB_RECYCLE_CACHE_SIZE 파라미터를 통해 수정가능.), 유지되고 있던 Data와 새롭게 사용되어진 데이터가 존재함
- 데이터 파일에서 읽은 데이터 블록의 복사본을 보관하는 SGA부분,
- SQL이 들어오게 되면, 디스크영역인 데이터파일로 바로 들어 가지 않고 데이터베이스 버퍼캐시에서 있는 지 없는 지를 확인한 뒤, 해당 SQL문의 값이 있다면 바로 데이터를 가져갈 수 있다. 없다면 디스크의 데이터 파일로 가게 되는데, 이 경우 속도가 느리다.
- 리두 로그 버퍼
- 데이터베이스에 대한 변경 사항 관련 정보가 포함된 SGA의 순환버퍼
- Insert, Update, Delete, Create, Alter or Drop 수행으로 변화된 내용의 정보를 Redo entries에 저장한다.
- Redo entries -> Redo log buffer -> LGWR -> Redo log file(or 파일 구룹형태)
- 초기화 파라미터 LOG_BUFFER redo log buffer size 결정(default setting 512kb 또는 128kb CPU_COUNT 파라미터)
- 변경사항의 기록을 통해서 추후에 발생할 수도 있는 데이터 손실이나 분실 시에 복구할 수 있도록 도와 준다. (리두로그버퍼->LGWR->온라인 리두 로그 파일->아카이브된 로그파일)
- Shared Pool(Shared_Pool_Size)
- 라이브러리 캐시
- Shared SQL Areas, Private SQL Areas, PL/SQL procedures and packages, and control structures such as locks and library cache handles 를 포함한다.
- Shared SQL Areas
- 주어진 SQL 상태의 실행 계획과 Parse Tree(파스트리: 언어에서 문법의 시작 기호가 어떻게 스트링을 유도하는가를 그림으로 표현하는 것으로 유도 트리라고도 한다.)가 들어 있다.
- 새로운 SQL-> 메모리(shared pool) -> Shared SQL area(SQL statements run multiple times), 종종 많은 유저들의 SQL이 실행 될 경우가 있다.
- 만약 Shared SQL area에 할당된 공간에 자리가 없다면, 공간이 생길 때 까지 대기,
- Private SQL Areas
- Private SQL은 data such as bind information and runtime memory structures 포함한다.
- A cursor is a handle or name for a private SQL area
- Shared SQL Areas 와 Private SQL Areas의 차이는??
- 딕셔너리 데이터를 보관하는 메모리의 나머지 한 영역
- 공유 SQL영역: SQL문에 대한 구문 분석 트리 및 실행 계획이 포함됨.
- SQL문이 들어오기 되면 가장 먼저 이 곳에 들어와 SQL문이 이전에 수행 되었는지를 체크한 한다.
- 데이터 딕셔너리 캐시 캐시
- 데이터베이스, 해당 구조 및 유저에 대한 참조 정보를 포함하는 데이터베이스 테이블 및 뷰 모음
- 메모리상의 2가지 특별한 위치로 ACCESS함(data dictionary cache, row cache), library cache
- Shared Pool에서 메모리 할당 및 재사용
- 라이브러리 캐시에 이전에 사용되었던 SQL문이 존재한다면, 서버 프로세스는 세션을 대신하여 Private SQL 영역을 할당하여 해당 SQL문의 재사용(SQL 수행 속도 향상)
- Large Pool
- The database administrator can configure an optional memory area called the large
pool to provide large memory allocations for:
- Session memory for the shared server and the Oracle XA interface (used where
transactions interact with more than one database)
- I/O server processes
- Oracle backup and restore operations
- Java Pool
- Java pool memory is used in server memory for all session-specific Java code and data
within the JVM. Java pool memory is used in different ways, depending on what mode
the Oracle server is running in.
- Streams Pool
- PGA(System Global Area)
- 서버 또는 백그라운드 프로세스의 데이터 및 제어 정보를 포함하는 메모리 영역
- User Process
- 사용자가 오라클 Application Program을 실행 시켰을 때 사용되는 프로세스
- 사용자가 오라클 서버에 접속할 때마다 사용자 프로세스가 생성된다.
- 사용자가 실행시킨 SQL문을 서버 프로세스에 전달하고, 그 결과를 서버 프로세스로부터 받는 역할을 수행한다.
- Server Process
- Oracle은 서버프로세스를 생성하여 접속된 사용자 프로세스의 요구 사항을 처리 및 상호작용
- 공유 서버 구성에서는 여러 개의 사용자 프로세스가 적은 수의 서버 프로세스를 공유하여 서버 프로세스 수를 최소화하는 동시에 사용 가능한 시스템 자원 활용도를 최대화 한다.
- 오라클 서버 프로세스는 사용자로부터 받은 요구사항(SQL문)을 처리 합니다.
전달받은 SQL문을 Parse, 실행(Execute), 페치(Fetch) 작업을 통해 실행 시키는 역할을 한다.
- Connection and Sessions
- Connection 은 유저 프로세스와 오라클 인스턴스 사이의 Communication pathway
- Sessions 은 유저 프로세스와 오라클 인스턴스가 Connection된 상태를 유지하는 특별한 상태.
- Multiple Session 가능, 예) 같은 유저아이디로 여러명이 접속할 수 있음.
<참고문헌>
Oracle Database 11g : Adminstration Workshop
Oracle Database 11g Documentation Library
Oracle Database 10g Documentation Library
원본 위치 <http://www.oracleclub.com>
원본 위치 <http://www.dbguide.net/db.db?cmd=view&boardUid=12906&boardConfigUid=9&boardIdx=49&boardStep=1>
'1. IT Story > DB' 카테고리의 다른 글
Oracle Instance 시작과 종료 (0) | 2012.02.29 |
---|---|
Oracle Parameter file(spfile/pfile) (0) | 2012.02.29 |
Oracle Structure 저장 영역 구조 (0) | 2012.02.29 |
Oracle Structure 프로세스 (0) | 2012.02.29 |
Oracle 11g Install[RHEL 5] 3 (0) | 2012.02.27 |
Oracle 11g Install[RHEL 5] 2 (0) | 2012.02.27 |
Oracle 11g Install[RHEL 5] 1 (0) | 2012.02.27 |
Oracle Engine백업 및 그외.. (0) | 2011.09.11 |