다중 Data Buffer Cache 와 ASMM &

Oracle 8i부터 Data Buffer Cache 를 3개의 용도로 나누어서 사용할 수 있다.
종류는 다음과 같이 조회 할 수 있다.


구분
-
SQL> show parameter cache_size

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_16k_cache_size                    big integer 16M
db_2k_cache_size                     big integer 0
db_32k_cache_size                    big integer 0
db_4k_cache_size                     big integer 0
db_8k_cache_size                     big integer 0
db_cache_size                        big integer 0
db_keep_cache_size                   big integer 0
db_recycle_cache_size                big integer 0
-

위에 조회된 내용중 highlight 된 3개가 그 3개의 버퍼 캐시이다. 


DB_CACHE_SIZE
Default : 일반 데이터 버퍼 캐쉬를 의미하며 DB_CACHE_SIZE 으로 정의된다.



DB_KEEP_CACHE_SIZE
재사용률이 높은 블록이 위치하게 된다. 이 곳에 읽혀진 블록은 긴 시간동안 메모리상에서 관리된다.
DB_KEEP_CACHE_SIZE 으로 정의 된다.

대상 객체

자주 사용되는 메타성 데이터나 인덱스등을 위치하면 된다.

사용법
-
ALTER TABLE test STORAGE ( BUFFER_POOL KEEP);
-
DB_RECYCLE_CACHE_SIZE
재사용률이 거의 없다고 판단되는 블록이 읽히는 공간이다. 이곳에 위치하게 되는 블록은 짧은 시간동안 관리된다.
DB_RECYCLE_CACHE_SIZE 으로 정의 된다. 
-
ALTER TABLE test STORAGE ( BUFFER_POOL RECYCLE);
-





종합

위 세가지의 CACHE 영역은 각자만의 독립된 영역을 할당받고 LRU List 를 관리한다.
위의 영역에서 관리되는 시간이 서로 다를 수 있는 이유는 DB_KEEP_CACHE_SIZE > DB_CACHE_SIZE > DB_RECYCLE_SIZE 순으로 크기가 다르기 때문이다. 당연히 크기가 큰 순으로 블록이 오래 관리되는 것이다.

이 부분은 Table 을 설계할 때부터 고려를 해야 한다. 하지만 테이블의 개수가 많고 추후에 수정될 가능성이 높다면 융통성이 부족해진다.





ASMM (Auto Shared Memory Management) &

제목 그대로 공유 메모리인 SGA의 메모리를 자동으로 관리해주는 기능을 말한다. 이 기능은 10g 에서 등장했다. 
ASMM 을 사용하기 위해서는 STATISTICS_LEVEL 파라미터의 값을 ALL 또는 TYPICAL 으로 하고 SGA_TARGET 의 값이 0이 아니여야 한다. 


STATISTICS_LEVEL 조회 

-
SQL> show parameter statistics_level

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
statistics_level                     string      TYPICAL
-
SGA_TARGET 값 조회
-
SQL> select name, value from v$parameter where name = 'sga_target';

NAME       VALUE
---------- ------------------------------
sga_target 419430400
-

ASMM 으로 자동 관리되는 파라미터

SGA 의 구성 (Shared Pool, Db Buffer Cache, Large Pool, Java Pool, Stream Pool 크기를 정의하고 Redo Log는 하지 않는다 는 점을 유의하자.)

- DB_CACHE_SIZE
- SHARED_POOL_SIZE
- LARGE_POOL_SIZE
- JAVA_POOL_SIZE
- STREAMS_POOL_SIZE


ASMM 을 사용해도 수동으로 관리해야 하는 파라미터

- Log_buffer
Redo Log Buffer 의 SIZE 이다. 이 크기는 대용량 데이터베이스라도 10Mb 를 넘기지 않는것이 좋다.


- DB_Kepp_cache_size
- RECYCLE_BUFFER_CACHE_SIZE
- DB_nK_CACHE_SIZE (n=2,4,8,16,32)
DB BUFFER CACHE 내의 고정 영역이다. 이것은 사용자가 직접 지정한다.  



자동관리되는 영역 조회 

컬럼소개

CURRENT_SIZE : 현재 크기
MIN_SIZE : 데이터베이스 시작 후 가장 작은 크기
MAX_SIZE : 데이터베이스 시작 후 가장 큰 크기
USER_SPECIFIED_SIZE : 사용자가 설정한 크기
OPER_COUNT : 데이터베이스 시작 후 조정되었던 횟수
LAST_OPER_TYPE : 마지막 조정된 타입
 - STATIC : 변동 없음
 - INITIALIZING : 초기화
 - GLOW : 증가
 - SHRINK : 감소
 - SHRINK_CANCEL : 감소 취소
LAST_OPER_MODE : 마지막 조정된 방법
 - MANUAL : 사용자 수정
 - DEFFERED : 지연 적용
 - IMMEDIATE : 바로 적용
LAST_OPER_TIME : 마지막 조정된 시간
GRANULE_SIZE : 그레뉼 단위 크기



조회 결과
Highight 된 부분이 ASMM 으로 관리되는 부분이다.  
-
col component for a30
SQL> SELECT * FROM V$SGA_DYNAMIC_COMPONENTS

COMPONENT                      CURRENT_SIZE   MIN_SIZE   MAX_SIZE USER_SPECIFIED_SIZE OPER_COUNT LAST_OPER_TYP LAST_OPER LAST_OPER_TI GRANULE_SIZE
------------------------------ ------------ ---------- ---------- ------------------- ---------- ------------- --------- ------------ ------------
shared pool                       117440512  117440512          0                   0          2 SHRINK        DEFERRED  05-APR-12         4194304
large pool                          4194304    4194304          0                   0          0 STATIC                                    4194304
java pool                           4194304    4194304          0                   0          0 STATIC                                    4194304
streams pool                        4194304    4194304          0                   0          0 STATIC                                    4194304
DEFAULT buffer cache              268435456  268435456          0                   0          5 SHRINK        MANUAL    05-APR-12         4194304
KEEP buffer cache                         0          0          0                   0          0 STATIC                                    4194304
RECYCLE buffer cache                      0          0          0                   0          0 STATIC                                    4194304
DEFAULT 2K buffer cache                   0          0          0                   0          0 STATIC                                    4194304
DEFAULT 4K buffer cache                   0          0          0                   0          0 STATIC                                    4194304
DEFAULT 8K buffer cache                   0          0          0                   0          0 STATIC                                    4194304
DEFAULT 16K buffer cache           16777216          0          0            16777216          3 GROW          MANUAL    05-APR-12         4194304
DEFAULT 32K buffer cache                  0          0          0                   0          0 STATIC                                    4194304
ASM Buffer Cache                          0          0          0                   0          0 STATIC                                    4194304
-



최소값 설정

ASMM 을 사용시에 ASMM에 관리되는 메모리영역의 값을 0으로 해놓으면 자동으로 관리되지만 최소값이 1 그레뉼까지 내려간다. 이런 경우를 방지하기 위해 기본값을 설정하는데 기본값을 설정하면 그 이상으로 내려가지 않는다. 즉 하한값 설정이다.

기본값 조회
-
SELECT name, value 
FROM v$parameter
WHERE name IN ('db_cache_size','shared_pool_size','large_pool_size','streams_pool_size','java_pool_size')
ORDER BY name
-

변경은 기존의 ALTER SYSTEM SET () [SCOPE=spfile | both | memory]; 으로 가능하다.

&



 

'Oracle > Administrator' 카테고리의 다른 글

Hidden Parameter 조회  (1) 2012.04.16
동적 파라미터와 정적 파라미터 구분하기  (0) 2012.04.16
Directory 관리  (0) 2012.04.04
Temporary Tablespace 관리  (0) 2012.04.04
디스크 사용량  (0) 2012.03.31