달력

2

« 2025/2 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
2017. 7. 2. 21:34

oracle SGA 영역 C. Oracle2017. 7. 2. 21:34

 

▣ SGA란?
 
 - 
오라클 서버의 메모리 영역.(오라클 서버가 실행될때마다 SGA가 메모리에 할당)
    └>Oracle의 인스턴스에 대한 데이타와 제어 정보를 가지는 공유 메모리 영역의 집합

 - 오라클 파라미터 파일(init.ora)의 조정으로 SGA의 각 부분의 크기를  조절 
      
     (initSID.ora 파일을에서 large_pool_size=8388608, shared_pool_size= 50331648)

- Oracle9i부터 오라클 서버의 종료없이 SGA의 구성을 SGA_MAX_SIZE 파라미터 값
    범위 내에서만  각각의 크기를 동적으로 변경 가능 합니다.


 - Oracle 서버를 동시에 사용하고 있는 사용자는 시스템 글로벌 영역의 데이타를 공유 


 - 전체 시스템 글로벌 영역을 실제 메모리가 허용하는 범위에서 가장 크게 잡으면,
    디스크 I/O를 줄이고 메모리에 가능한 많은 데이타를 저장할 수 있으므로 최적의
    성능을 낼 수 있습니다.


 - SGA의 구성 :   
Shared Pool (공유 풀)
                         
DataBase Buffer Cache (데이터베이스 버퍼캐쉬),
                          
Redo Log Buffer(리두로그 버퍼),
                      
                          Large Pool,
                          Java Pool   


    





1. 공유 풀(Shared Pool)

 ▣ Shared Pool은
Library Cache(=Shared SQL Area) 와 Data Dictionary Cache
   
 로 구성.
 

 ▣ Shared Pool은 하나의 데이타베이스에 행해지는 모든 SQL 문을 처리하기 위하여 사용 됩니다.

 ▣ Shared Pool은 문장을 실행하기 위해 그 문장과 관련된 실행 계획과 구문분석 정보가 들어 있습니다.  

 ▣ Shared Pool의 사이즈는 SHARED_POOL_SIZE 파라미터 값으로 결정합니다.  



Library Cache (= Shared SQL Area)

 - 가장 최근에 사용된 SQL 문장의 명령문과, 구문 분석 트리, 실행계획 정보를 가진다

 - Sql문장 하나를 실행하는데에 이용된 정보를 갖고 있으며 동일한 Sql문장을 실행하는 프로세스간에
   정보를 공유할수 있다. 단,완전히 동일한 문장만 같은 메모리에 위치한다. (대소문자 다른문장 인식)

 




Data Dictionary Cache

 - 데이타베이스와 그 구조(테이블,컬럼..),사용자에 대한 참조정보를
   갖고 있는 데이타베이스 테이블과 뷰의 집합이다

 - 구문 분석 단계에서 서버 프로세스는 SQL문에 지정된 오브젝트 이름을
   찾아내고 접근 권한을 검증하기 위해 Dictionary Cache의 정보를 찾는다

 
 
 

2. 데이터베이스 버퍼 캐쉬(DataBase Buffer Cache)

 ▣ 디스크에서 읽은 데이타 블록의 복사본을 저장하는 메모리 공간입니다.

 ▣ 동시 접속한 사용자들은 데이타베이스 버퍼 캐쉬를 공유하여 Access 한다.

 ▣ LRU 알고리즘에 의하여 가장 오래전에 사용된 것은 디스크에 저장하고
     메모리에는 가장 최근에 사용된 데이타를 저장




 ▣ 캐시 실패: 데이타를 처음 Access하는 것이라면 서버 프로세스는 디스크로부터 데이타
              를 읽어서 캐시에 올린다.
   캐시 적중: 데이타를 Access할 때 이미 캐시에있다면 메모리에서 직접 데이타를 읽는다.

   캐시적중률(Hit Ratio) : 85%~90% 정도를 유지하는것이 좋다.
 ▣ 크기결정: DB_BLOCK_SIZE * DB_BLOCK_BUFFERS
 

 
3. 리두 로그 버퍼(Redo Log Buffer)

  ▣ 리두 로그 버퍼는 데이터베이스에서 일어난 변경정보를 저장하는 메모리 공간 입니다.

  ▣ DB에서 발생한 모든 변화는 LGWR에 의해 리두 로그 파일에 저장 합니다.
     ( 변화가 있을때마다 리두로그 파일에 저장하면 속도에 문제가 있기때문에 리두로그 버퍼에 저장
       했다가 일정한 시점이 되면 리두로그버퍼에서 피두로그 파일로 저장을 한다. )  

  ▣ Redo Log Buffer의 크기는 오라클 파라미터 LOG_BUFFER에서 지정합니다.


4. Java Pool과 Large Pool

1) Java Pool

  - Java Pool은 자바로 작성된 프로그램을 실행할 때 실행 계획을 저장하는 영역 입니다.

  - Java Pool은 JAVA_POOL_SIZE 파라미터로 관리되며, 기본 크기 24MB가 할당 됩니다.


2) Large Pool

  - Large Pool은 Oracle 백업 및 복원 작업에 대한 대용량 메모리 할당, I/O 서버 프로세스 및
    다중 스레드 서버와 Oracle XA에 대한 세션 메모리를 제공하는 SGA의 선택적인 영역입니다

  - Large Pool은 LARGE_POOL_SIZE 파라미터로 관리되며, 기본 크기는 0bytes 입니다.
 
 


'C. Oracle' 카테고리의 다른 글

oracle 10g 설치 linux  (0) 2017.07.02
oracle 10g XE설치  (0) 2017.07.02
oracle 조인  (0) 2017.07.02
oracle DDL  (0) 2017.07.02
oracle 기본쿼리 사용하기  (0) 2017.07.02
:
Posted by sfeg