ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Oracle의 메모리 구조
    Database 2008. 8. 28. 12:04
    반응형

    오라클 메모리 구조
    : 오라클은 정보를 메모리와 디스크등에 저장 합니다. 가능하면 메모리에 원하는 정보가 있는 것이 훨씬 빠르고 효율적 입니다.

    - SGA (System Global Area)
      : 오라클 프로세스들이 접근하는 하나의 큰 공유 메모리 세그먼트(Share Pool, DataBase Buffer Cache, Redo Log Buffer, Java Pool, Large Pool)

    - PGA(Program Global Area)
      : 한 프로세스 혹은 스레드의 개별적인 메모리 공간으로 다른 프로세스와 스레드는 접근 불가, 사용자마다 공유하지 않고 개별적으로 사용.

    PGA(Program Global Area)

    ◈ PGA 개념
    - 서버 프로세스에 생성되며 오라클에서 사용하는 메모리 영역
    - 데이터베이스에 접속하는 모든 유저에게 할당되어 각각의 서버 프로세스가 독자적으로 사용하는 오라클 메모리 영역

    -PGA 구조
      : 유저 프로세스가 요청한 작업을 수행하기 위해 필요한 영역으로 구성
       1. sort area : order by 또는 group by  등의 정렬을 수행하기 위한 공간이며 해당 공간에서만 정렬이 완료 된다면 이를 메모리 정렬이라고 한다. 해당 정렬 메모리 공간이 부족하면 디스크를 이용한다.
       2. session information : 서버 프로세스에 의해 추출된 결과 갑을 전달하기 위해 필요한 유저 프로세스에 세션정보를 저장.
       3. cusor state : 해당 SQL 의 parsing 정보가 저장되어 있는 주소를 저장.
       4. stack space : SQL 문장에  bind variable 를 사용했을 경우 해당 bind variable 를 저장하는 공간.

    -하나의 유저 프로세스에 하나의 서버 프로세스가 할당되며,, 또한 하나의 서버 프로세스는 하나의 PGA 를 생성한다.
     
    ◈ PGA 관리
    -오라클에서는 다음과 같은 파라미터에 의해 PGA 크기를 관리할 수 있다.
       1. WORKAREA_SIZE_POLICY  : MANUAL 과  AUTO 로 설정 할 수 있으며 AUTO 로 설정했을 경우에는 PGA_AGGREGATE_TARGET 파라미터를 이용하여 PGA의 크기를 설정하겠다는 뜻이다. MANUAL 로 설정할 경우는 SORT_AREA_SIZE 파라미터를 이용하여 정렬 공간을 설정하게 된다.
       2. SORT_AREA_SIZE : 정렬 공간에 대한 크기를 설정하는 파라미터
       3. PGA_AGGREGATE_TARGET : 모든 세션의 PGA 크기의 합을 설정하는 파라미터이며, PGA_AGGREGATE_TARGET 파라미에서 지정한 크기까지 오라클이 PGA 를 자동으로 관리한다. 정렬 작업의 양이 많아 더 큰 PGA 를 요구한다면 이 파라미터 값의 정해진 크기 내에서 할당가능하므로 처음에 충분히 크게 설정 해주어야한다.

    -PGA 크기 확인

        SELECT * FROM v$process
           * PGA_USED_MEM : 프로세스가 현재 사용하는 PGA 크기
           * PGA_ALLOC_MEM : 프로세스에 할당된 PGA 의 크기 (사용 완료 후 시스템 메모리에 반환하지 않는 메모리 포함)

    SGA(System Global Area)
         
     ◈ SGA 개념
      -오라클이 데이터를 읽거나 변경하기 위해 사용하는 공용 메모리 영역
      -공용 메모리 영역이므로 동일 데이터베이스에 접속하는 모든 사용자는 동일 SGA 를 사용
      -인스턴스가 시작될 때 시스템 메모리에서 할당 받으며 종료될때 다시 시스템 메모리 영역으로 반환.

     ◈ SGA 구조
      - Shared Pool
      - Data Buffer
      - Redo Log Buffer
      - Large Pool
      - Java Pool

     ◈ SGA 관리
    - SGA 변경

                SQL> ALTER SYSTEM SET parameter_name = 변경 값;
                SQL> ALTER SYSTEM SET db_cache_size = 변경값;   => Data Buffer cache
                SQL> ALTER SYSTEM SET shared_pool_size = 변경값;  => Shared Pool

    - SGA 확인

                SQL> SHOW SGA
                SQL> SELECT * FROM V$SGA;
                SQL> SELECT * FROM V$SGASTAT;
                SQL> SELECT * FROM V$SGA_DYNAMIC_COMPONENTS;    

    -  SGA 구조를 변경하는 작업은 사용하는 파라미터 파일의 종류에 따라 차이점이 존재
      → 정적 파라미터 파일 :데이터베이스가 재시작하게 되면 파라미터 파일(PFILE, initSID.ora) 에 설정딘 값을 재적용. 따라서 변경된 값을 유지하기 위해서는 파라미터 파일 (initSID.ora)에 해당하 변경 내용을 수정해야함
      → 동적 파라미터 파일 : 동적 환경 파일 (SPFILE, spfileSID.org) 을 사용하는 경우 ALERT SYSTEMM SET  명령어 뒤에 scope=BOTH 옵션을 추가하게 되면 변경된 값이 메모리와 동적 파라미터 파일에 동시에 적용되므로 데이터베이스 재시작 후에도 변경된 값이 적용된다.

     ◈ SGA 크기 확인
      - V$SGA
      - V$PARAMETER
      - V$SPPARAMETER
      - V$SGA_DYNAMIC_COMPONENTES
      - shared parameter 명령어

    반응형
Designed by Tistory.