DB CACHE ADVICE
EXEM Knowledge Base
목차 |
[편집] 개요
oracle 9i 부터는 SGA 영역 크기를 온라인 상태에서 바꿀 수 있다. 이를 Dynamic SGA 기능이라 한다. 이렇게 바꿀 수 있는 메모리 영역은 Shared Pool, Buffer Cache, Large Pool의 세가지이다. 이 중 Buffer Cache 크기를 조절했을 때의 성능을 예측하는 Advisory 기능을 DB_CACHE_ADVICE 파라미터를 통하여 제공한다. DB_CACHE_ADVICE = ON인 경우 Buffer Cache Advisory 기능이 enable되며 V$DB_Cache_Advice 뷰를 통하여 내용을 확인할 수 있다.
[편집] 상세 정보
[편집] Parameter 정보
| Syntax | DB_CACHE_ADVICE = {ON | READY | OFF} |
| Default | OFF |
| 설정방법 |
|
[편집] 설명
V$DB_Cache_Advice View에는 buffer cache별로 현재 크기의 10%에서 200%까지 20개의 크기에 대한 simulation정보를 기록한다. 각 크기별로 기존 block 참조 정보를 이용해서 예상되는 물리적 읽기 수를 제공한다.
Buffer Cache Advisory 기능 사용은 다음 두 가지의 오버헤드를 일으킨다.
-Advisory 기능은 buffer cache별로 bookkeeping을 위한 아주 약간의 CPU 오버헤드가 필요하다.
-MEMORY: Advisory 기능은 buffer block 당 shared pool에서 약 700 byte 정도의 메모리를 할당한다.
parameter는 ON, OFF, READY 세가지 값을 가질 수 있는데, 각각의 상태의 의미는 다음과 같다.
-OFF: Advisory 기능이 disable되고, CPU나 MEMORY 오버헤드가 없음
-ON: Advisory 기능이 enable되고, CPU나 MEMORY 오버헤드가 발생
-READY: Advisory 기능은 disable되나, shared pool의 메모리는 할당
READY 나 ON 시에는 shared pool의 Contention이 발생 하므로 충분한 여유공간을 확인 후 작업을 한다.
물론 Overhead가 발생 함을 주의해야 한다.
[편집] Analysis Case
[편집] DB_CACHE_ADVICE 파라미터 설정에 의한 Latch 대기현상
맥스게이지를 통하여 문제가 발생한 인스턴스의 CPU 사용률을 확인한 결과, CPU 사용률이 24시간 높게 유지되고 있으며, 특히 User CPU의 사용량이 높게 나타나고 있다.
하루동안 가장 많이 발생한 대기 이벤트는 latch free 이벤트이다.(Idle 이벤트는 제외) latch free 이벤트는 latch 를 획득하지 못했을 때 CPU를 점유한 상태에서 계속해서 Spin하며 latch 획득을 시도하게 됨으로 CPU 사용량의 증가와 관계가 있다.
session list 기능을 이용하여 latch free 대기이벤트를 검색한 결과, simulator lru latch 를 대기하는 세션이 확인되었다.
[편집] 결론
V$DB_CACHE_ADVICE 뷰에는 버퍼캐시 영역별로 10% ~ 200%까지 총 20개의 크기에 대한 Simulation 정보를 기록하는데, 정보를 기록하기 위해서 simulator lru latch 를 필요로 한다.
다수의 세션이 접속하여 I/O 작업을 수행할 때, 버퍼캐시에 대한 시뮬레이션 정보가 변경될 수 있고, 이 때 접속한 세션들은 simulator lru latch 를 대기할 수 있다. latch는 특성 상, 획득하기까지 계속해서 CPU를 점유하면서 스핀하여 획득 시도를 하므로 다수의 세션이 latch 대기 시 CPU 사용률이 증가한다.
이 기능을 해제하면 simulator latch에 대한 대기 현상은 해소되고, CPU 사용률도 확보되므로 DB_CACHE_ADVICE=OFF 를 권장한다.
외부 참조의 메타링크 문서를 참조 바랍니다.


