DBDBDEEP
Oracle 데이터베이스 성능관리 (SGA, PGA 관리) 본문
• 메모리관리 개요
- 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 이 백그라운드에서 캡처하는 작업로드 정보를 기반으로 작동
- MMON은 Memory Advisor 사용하여 주기적으로 캡처한다.
- MMAN 이 MMON의 결정에 따라 메모리 구성요소의 크기를 조정한다.
- 가장 많이 요구되는 곳으로 메모리 이동된다.
- SPFILE이 사용된 경우 컴퓨터 종료 후에도 구성요소 크기 저장
ASMM 활성화
수동 -> ASMM
1. SGA_TARGET의 값을 가져온다
2. 이 값을 사용하여 SGA_TARGET 값 설정
3. 크기가 자동으로 조정되는 SGA 구성요소 값 0으로 설정
ASMM 비활성화
- SGA_TARGET을 0으로 설정한다.
* ASMM 기능을 비활성화 하게 되면, 기능을 활성화 했을때 기준으로 값들이 설정되게 된다.
PGA 관리 (자동화)
- pga_aggregate_target = 400m 로 설정을 하게 된다.
- 모든 서버들이 사용하는 PGA의 총량이 400m로 설정하는 것이다.
2) 11g AMM(자동 메모리 관리) : sga + pga (sga와 pga의 통합)
- AMM 를 사용하여 instance에 할당되는 총 메모리를 지정할 수 있음
- SGA 및 PGA 모두 포함한다.
- 자동 메모리 관리(AMM) 를 사용하면 데이터베이스 서버가 작업 로드에 따라 SGA / PGA 크기를 자동으로 조정한다.
- memory_target = 을 설정한다. pga와 sga를 합친 사이즈를 지정하면 된다.
- SGA와 PGA가 직접 주고 받는 것은 안된다. 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_TARGET의 200% or 400m로 지정됨
'Oracle ADMIN' 카테고리의 다른 글
Oracle 설치 / 11g XE (0) | 2022.12.22 |
---|---|
Oracle RM (리소스 매니저) (0) | 2022.07.25 |
Oracle 데이터베이스 유지관리 (AWR, ADDM, Auto Task) (0) | 2022.07.25 |
Oracle Data Pump, 데이터 이동 (0) | 2022.07.24 |
Oracle 데이터베이스 감사(Audit) 구현 (0) | 2022.07.24 |