DB CACHE ADVICE

EXEM Knowledge Base

Jump to: navigation, 찾기

목차

[편집] 개요

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
설정방법
  • Parameter File
  • ALTER SYSTEM SET DB_CACHE_ADVICE= ON

[편집] 설명

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의 사용량이 높게 나타나고 있다.

그림:4_2_1.jpg

하루동안 가장 많이 발생한 대기 이벤트는 latch free 이벤트이다.(Idle 이벤트는 제외) latch free 이벤트는 latch 를 획득하지 못했을 때 CPU를 점유한 상태에서 계속해서 Spin하며 latch 획득을 시도하게 됨으로 CPU 사용량의 증가와 관계가 있다.

그림:4_2_2.jpg

session list 기능을 이용하여 latch free 대기이벤트를 검색한 결과, simulator lru latch 를 대기하는 세션이 확인되었다.

그림:4_2_3.jpg

[편집] 결론

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 를 권장한다.

외부 참조의 메타링크 문서를 참조 바랍니다.

[편집] 외부 참조

  1. DB_CACHE_ADVICE_Bug5918642