Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
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 29 30 31
Archives
Today
Total
관리 메뉴

DBDBDEEP

Oracle 데이터베이스 성능관리 (SGA, PGA 관리) 본문

Oracle ADMIN

Oracle 데이터베이스 성능관리 (SGA, PGA 관리)

Kihwane 2022. 7. 25. 19:01

메모리관리 개요

- DBA는 메모리 관리를 직무의 중요한 부분으로 고려해야한다

 

 이유는

1) 사용가능한 메모리양의 한정

2) 특정 유형의 기능을 제공하는 메모리를 더 많이 할당하면 전체적인 성능이 향상

3) 자동으로 튜닝된 메모리여도 최적화를 위해 모니터 해야함. 어느정도 수동 구성 필요

 

 

메모리 구성 요소 관리

수동으로 구성하는 방법

- 여러 개별 초기화 파라미터를 통해 구성 요소의 크기를 조정한다.

 ex) Shared_pool_szie = 80m / db_cache_size = 40m

 

9. 버전 기준 수동으로 구성하는 방법 : Dynamic SGA 기능

shared_pool_size=50m 으로 지정해 놨었는데 분석 보고서를 보니 Cache_hit가 적게나오면

shared_pool_size를 늘리는 방법이 있다. 또는 DB_cahce_size 를 늘리거나.

 

alter system set shared_pool_size = 50m;

db_cache_size

large_pool_size

alter system set log_buffer_20m scope=spfile; (DB Restart해야 적용가능)

 

9.버전까지는 ref문서 63~64 처럼 수동으로 메모리 관리를 하였었다.

 

자동으로 구성하는 방법

10g 버전부터 ASMM 자동화 버전이 나왔다.

 

1) 10g ASMM(자동 공유 메모리 관리): SGA

 -  하나의 초기화 파라미터를 통해 총 SGA 메모리를 지정할 수 있음.

 -  Oracle 서버가 Shared Pool, Java Pool, 버퍼 캐시, Streams Pool Large Pool  할당된 메모리 양을 관리      할 수 있음.

-  sga_target 안에 Size를 지정할 수 있다.

-  sga_Max_size sga_target_size 보다 크게 해야만 한다.

 

ex)   sga_target_size = 1g 로 지정한다.

ASMM 작동

- Large pool 을 많이 사용하는 것이라면 자동으로 Large Pool 사이즈를 줄이고 다른 컴포넌트가 줄어들게 된    다.

- 오라클 데이터베이스 서버가 메모리를 가장 효율적인 방식으로 활용하게 배분한다.

- 모든 파라미터 값을 0으로 지정하면 오라클에게 전적으로 맡긴다.

- shared_pool_size = 4 으로 지정하면 4 이하로는 떨어지지 않게 한다.

 

* 우리가 아는 log_buffer 는 무조건 지정한 값으로 설정된다.

 

ASMM 이해

- ASMM MMON 이 백그라운드에서 캡처하는 작업로드 정보를 기반으로 작동

- MMONMemory Advisor 사용하여 주기적으로 캡처한다.

- MMAN MMON의 결정에 따라 메모리 구성요소의 크기를 조정한다.

- 가장 많이 요구되는 곳으로 메모리 이동된다.

- SPFILE이 사용된 경우 컴퓨터 종료 후에도 구성요소 크기 저장

 

ASMM 활성화

수동 -> ASMM

 1. SGA_TARGET의 값을 가져온다

 2. 이 값을 사용하여 SGA_TARGET 값 설정

 3. 크기가 자동으로 조정되는 SGA 구성요소 값 0으로 설정

 

 

ASMM 비활성화

- SGA_TARGET0으로 설정한다.

 *  ASMM 기능을 비활성화 하게 되면, 기능을 활성화 했을때 기준으로 값들이 설정되게 된다.

 

 

 


 

 

PGA 관리 (자동화) 

 

- pga_aggregate_target = 400m 로 설정을 하게 된다.

- 모든 서버들이 사용하는 PGA의 총량이 400m로 설정하는 것이다.

 

 2) 11g AMM(자동 메모리 관리) : sga + pga (sgapga의 통합)

 - AMM 를 사용하여 instance에 할당되는 총 메모리를 지정할 수 있음

 - SGA PGA 모두 포함한다.

-  자동 메모리 관리(AMM) 를 사용하면 데이터베이스 서버가 작업 로드에 따라 SGA / PGA 크기를 자동으로       조정한다.

memory_target = 을 설정한다. pgasga를 합친 사이즈를 지정하면 된다.

-  SGAPGA가 직접 주고 받는 것은 안된다. OS를 통해서 서로 부족한 부분을 받아낸다.

 

AMM을 통해서 메모리를 자동화 하였다 해도

Log_buffer

Result_cache_size

DB_KEEP_CACHE_SIZE

DB_RECYVLE_CAHCE_SIZE

DB_nk_CACHE_SIZE 는 지정해줘야 한다.

 

이것을 먼저 지정해주고, Memort_target 지정하면 자동으로 저 부분을 할당후 나머지는 자동화 관리가 된다.

 

자동 메모리 관리를 확인하는 뷰

V$MEMORY_DYNAMIC_COMPONENTS : 모든 메모리 구성 요소의 현재 상태

V$MEMORY_DYNAMIC_COMPONENTS : 최근의 메모리 크기조정 요청의 순환 기록 버퍼

   ㄴ-> 요청이 많으면 사이즈가 작다. 그만큼 주었다 뺐는것이기 때문이다.

 

자동 PGA 메모리 관리 / 12c

- Instance PGA 전용으로 사용되는 총 메모리 양을 전역적으로 자동 관리

- PGA_AGGREGATE_TARGET 파라미터를 사용하여 PGA 메모리 양 제어

┗━> 모든 서버 프로세스 및 BP에 할당된 총 PGA 메모리가 파라미터 값을 초과하지 않음

┗━> 목표 값이며 엄격한 한계는 아니다.

 

- PGA_AGGREGATE_LIMIT을 설정하지 않을 경우

PGA_AGGREGATE_TARGET200% or 400m로 지정됨