메모리 구조

- Instance에는 크게 2가지로 구성되어 있다. 메모리 영역(SGA, PGA)과 프로세스 영역(백그라운드 프로세스)

   

   

  1. Instance
    1. SGA(System Global Area)
  • 단일 오라클 데이터 베이스 Instance의 데이터 및 제어 정보를 포함하는 SGA구성 요소라는 공유 메모리 구조 그룹.

       

       

       

  1. 데이터베이스 버퍼 캐시
    1. 2개의 list로 구성됨(Write List 와 LRU(Least Recently) List)
    2. 데이터베이스 버퍼 캐시의 사이즈 2K~32K(멀티 블록 사이즈, 표준 블록 사이즈, SYSTEM Tablespace, DB_BLOCK_SIZE 파리미터를 수정하여 변경가능)
    3. 파라미터 일 때(DB_2~32K_CACHE_SIZE) 블록과 캐쉬 사이즈 일 때(DB_BLOCK_SIZE=4096, DB_CACHE_SIE=1024M, DB_2K~8K_CACHE_SIE=512M)
    4. 추가적인 Multiple Buffer pools(Keep and Recycle - DB_KEEP_CACHE_SIZE and DB_RECYCLE_CACHE_SIZE 파라미터를 통해 수정가능.), 유지되고 있던 Data와 새롭게 사용되어진 데이터가 존재함
    5. 데이터 파일에서 읽은 데이터 블록의 복사본을 보관하는 SGA부분,
    6. SQL이 들어오게 되면, 디스크영역인 데이터파일로 바로 들어 가지 않고 데이터베이스 버퍼캐시에서 있는 지 없는 지를 확인한 뒤, 해당 SQL문의 값이 있다면 바로 데이터를 가져갈 수 있다. 없다면 디스크의 데이터 파일로 가게 되는데, 이 경우 속도가 느리다.

         

  2. 리두 로그 버퍼
    1. 데이터베이스에 대한 변경 사항 관련 정보가 포함된 SGA의 순환버퍼
    2. Insert, Update, Delete, Create, Alter or Drop 수행으로 변화된 내용의 정보를 Redo entries에 저장한다.
    3. Redo entries -> Redo log buffer -> LGWR -> Redo log file(or 파일 구룹형태)
    4. 초기화 파라미터 LOG_BUFFER redo log buffer size 결정(default setting 512kb 또는 128kb CPU_COUNT 파라미터)
    5. 변경사항의 기록을 통해서 추후에 발생할 수도 있는 데이터 손실이나 분실 시에 복구할 수 있도록 도와 준다. (리두로그버퍼->LGWR->온라인 리두 로그 파일->아카이브된 로그파일)

         

  3. Shared Pool(Shared_Pool_Size)
    1. 라이브러리 캐시
      1. Shared SQL Areas, Private SQL Areas, PL/SQL procedures and packages, and control structures such as locks and library cache handles 를 포함한다.

           

        1. Shared SQL Areas
          1. 주어진 SQL 상태의 실행 계획과 Parse Tree(파스트리: 언어에서 문법의 시작 기호가 어떻게 스트링을 유도하는가를 그림으로 표현하는 것으로 유도 트리라고도 한다.)가 들어 있다.
          2. 새로운 SQL-> 메모리(shared pool) -> Shared SQL area(SQL statements run multiple times), 종종 많은 유저들의 SQL이 실행 될 경우가 있다.
          3. 만약 Shared SQL area에 할당된 공간에 자리가 없다면, 공간이 생길 때 까지 대기,

               

        2. Private SQL Areas
          1. Private SQL은 data such as bind information and runtime memory structures 포함한다.
          2. A cursor is a handle or name for a private SQL area

               

        3. Shared SQL Areas 와 Private SQL Areas의 차이는??

             

      2. 딕셔너리 데이터를 보관하는 메모리의 나머지 한 영역
      3. 공유 SQL영역: SQL문에 대한 구문 분석 트리 및 실행 계획이 포함됨.
      4. SQL문이 들어오기 되면 가장 먼저 이 곳에 들어와 SQL문이 이전에 수행 되었는지를 체크한 한다.

           

    2. 데이터 딕셔너리 캐시 캐시
      1. 데이터베이스, 해당 구조 및 유저에 대한 참조 정보를 포함하는 데이터베이스 테이블 및 뷰 모음
      2. 메모리상의 2가지 특별한 위치로 ACCESS함(data dictionary cache, row cache), library cache

           

    3. Shared Pool에서 메모리 할당 및 재사용
      1. 라이브러리 캐시에 이전에 사용되었던 SQL문이 존재한다면, 서버 프로세스는 세션을 대신하여 Private SQL 영역을 할당하여 해당 SQL문의 재사용(SQL 수행 속도 향상)

           

  4. Large Pool
    1. 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

       

  1. Java Pool
    1. 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.

         

  2. Streams Pool

       

  1. PGA(System Global Area)

       

  • 서버 또는 백그라운드 프로세스의 데이터 및 제어 정보를 포함하는 메모리 영역

       

  1. User Process
    1. 사용자가 오라클 Application Program을 실행 시켰을 때 사용되는 프로세스

       

    1. 사용자가 오라클 서버에 접속할 때마다 사용자 프로세스가 생성된다.
    2. 사용자가 실행시킨 SQL문을 서버 프로세스에 전달하고, 그 결과를 서버 프로세스로부터 받는 역할을 수행한다.

       

  2. Server Process
    1. Oracle은 서버프로세스를 생성하여 접속된 사용자 프로세스의 요구 사항을 처리 및 상호작용
    2. 공유 서버 구성에서는 여러 개의 사용자 프로세스가 적은 수의 서버 프로세스를 공유하여 서버 프로세스 수를 최소화하는 동시에 사용 가능한 시스템 자원 활용도를 최대화 한다.
    3. 오라클 서버 프로세스는 사용자로부터 받은 요구사항(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
블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,