Oracle 구조_SGA영역

Oracle/Oracle_Admin1 2016. 5. 16. 15:41

 

- Instance : 메모리 공간

  - SGA(System Global Arera) : Shared Pool, DB_Buffer_Cache, Redo Log Buffer, Java Pool

                                        Large Buffer, Stream Pool,

 

1) Data Buffer Cache

- 데이터의 조회와 변경등의 실제 작업이 일어나는 곳

- 사용자가 변경하거나 조회하려는 정보는 모두 Data Buffer Cache에 있어야 한다.


조회나 변경을 하기 원하는 데이터는 모두 Data Buffer Cache에 있어야 한다.

Data Buffer Cache에 원하는 데이터가 없다면 Data file에서 해당 block을 복사해서 가져와야 


** 

여러 명의 사용자가 Data Buffer Cache를 공유해서 사용하게 되는데 같은 곳의 메모리 block을 사용하면 장애가 발생하게 된다.


그래서 block의 상태를 3가지로 구분해서 관리하게 된다.


- Pinned Buffer : 다른 사용자가 사용하고 있는 Buffer block

- Dirty Buffer : 현재 작업은 하고있지 않지만, 다른 사용자가 내용을 변경하고 아직 data file에 

                    변경된 내용을 저장하지 않은 Buffer block 

- Free Buffer : Unused 또는 Dirty Buffer의 상태였다가 디스크로 저장이 완료되어 재사용할 수 

                   있는 Buffer block


2) Redo Log Buffer

- Curcular Buffer이다.

- 크기는 LOG_BUFFER에서 지정하게 된다.

- data에 변경사항이 생길 경우( DML, DDL, TCL 등) -> 해당 변경 내용을 기록하는 역할을 한다

- 장애가 발생하게 되면 복구하기 위해서

- select는 기록하지 않는다.



3) Shared Pool


--- Library Cache

라이브러리 캐쉬는 가장 최근에 사용된 SQL 문장의 명령문과, 구문 분석 트리, 실행계획 정보를 가지고 있다.


- Shared SQL 영역 : SQL문장에 대한 실행계획과 파싱 트리를 저장하고 공유 합니다. 동일한 문   장이 다음번에 실행되면 Shared SQL 영역에 저장되어 있는 실행계획과 파싱 트리를 그대로     이용하기 때문에 SQL 문장의 처리 속도는 향상 됩니다.


- Shared PL/SQL 영역 : 가장 최근에 실행한 PL/SQL 문장을 저장하고 공유 합니다. 파싱 및 컴일 된 프로그램 및 프로시져(함수, 패키지, 트리거)가 저장 됩니다.


---Dictionary Cache

구문 분석, Optimizer가 실행 계획을 세울 때 사용된다.

dba_tables : table 존재 여부

dba_objects : 칼럼 존재 여부

dba_sys_privs : 권한 검사

  ......... 


4) Large pool

- RMAN으로 backup이나 Recovery할때 RMAN이 사용하는 I/O용 Buffer가 이곳에 생성된다.

-  


5) Java pool

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

- JAVA_POOL_SIZE로 관리된다.


6) Streams pool


admin