■ ASMM(Automatic Shared Memory Management) (10g)
1. SGA_TARGET 값을 설정하면 SGA 영역을 자동 관리한다.
2. SGA_TARGET 값은 SGA_MAX_SIZE 값보다는 작거나 같게 설정하면 된다.
3. SGA_TARGET 값은 db 운영중에 조정을 할 수 있다.
4. MMANDL Memory Advisor 사용하여 작동한다
5. spfile을 사용 권한(alter system set) 단, sga_target size 가 설정되어 있을 때만 적용가능
SQL> show parameter sga_target
SQL> show parameter sga_max_size
# SQL
SELECT * FROM v$parameter WHERE name in ('sga_max_size', 'sga_target');
# SQL
SELECT *
FROM v$sga_dynamic_components;
6. SGA_TARGET 설정되어 있더라도 수동으로 관리해야 하는 SGA 영역
- DB_KEPP_CACHE_SIZE
- DB_RECYCLE_CACHE_SIZE
- DB_nk_CACHE_SIZE (n= 2,4,8,16,32)
- LOG_BUFFER : 수동관리
7. SGA_TARGET 설정되어 있더라도 수동으로 동적 SGA PARAMETER 의 크기 조정 (=: shared pool 조정 가능.)
- 새로운 값이 현재 크기보다 큰 경우 즉시 구성 요소 크기가 조정된다.
- 새로운 값이 현재 크기보다 작은 경우 최소 크기가 변경된다.
[oracle@oracle ~]$ ps -ef | grep ora_mman
■ PGA(Program Global Area)
1. 서버프로세스 또는 백그라운드 프로세스의 데이터 및 제어 정보를 포함하는 메모리 영역이다.
2. PGA : 서버프로세스 또는 백그라운드 프로세스를 시작할 때 오라클 데이터 베이스에서 생성되는 비공유메모리
3. PAG 영역에 있는 SQL 작업영역 관리는 8i 수동관리
1) sort_area_size : 정렬(orderby절)
2) hash_area_size : hashgroup, hashjoin_(groupby 절)
3) bitmap_merge_area_size : index 생성시 필요한 메모리
4) create_bitmap_area_size : index 생성시 필요한 메모리
SQL> show parameter area
# SQL
SELECT *
FROM v$parameter
WHERE name in ('sort_area_size',
'hash_area_size',
'bitmap_merge_area_size',
'create_bitmap_area_size');
■ 자동 PGA 메모리관리(9i)
1. pga_aggregate_target 파라미터 기반으로 SQL 작업영역에 할당되는 PGA 메모리 양이 동적으로 조정된다.
(아래와 같은 조건일 경우)
1) sort_area_size : 정렬(orderby절)
2) hash_area_size : hashgroup, hashjoin_(groupby 절)
3) bitmap_merge_area_size : index 생성시 필요한 메모리
4) create_bitmap_area_size : index 생성시 필요한 메모리
2. workarea_size_policy = AUTO 로 되어 있으면 자동 PGA 메모리관리
SQL> show parameter workarea_size_policy
SQL> show parameter pga_aggregate_target
3. PGA 수동관리 (8i 버전)
ALTER SYSTEM SET workarea_size_policy = MANUAL;
ALTER SYSTEM SET pga_aggregate_target = 0;
4. PGA 세션 레벨에서 수동관리 (문장 튜닝)
ALTER SESSION SET workarea_size_policy = MANUAL;
ALTER SESSION SET sort_area_size = 1M; --(sort 크기 조정)
■ AMM(Automatic Memory Managerment) (11g)
SQL> show parameter target
memory_target(AMM) 가 관리하는 pga_aggregate_target, sga_target
1. AMM 기능은 PGA 및 SGA 의 크키 조정을 작업로드에 따라 자동으로 수행한다.
2. AMM 기능을 사용하려면 MEMORY_TARGET 값을 설정해야 한다.
- 설정되면 자동으로 pga_aggregate_target, sga_target 설정된다.
3. 오라클이 사용할 수 있는 최대 메모리 설정은 MEMORY_MAX_TARGET 값으로 설정하면 된다.
# SQL (자동관리)
SELECT *
FROM v$parameter
WHERE name in ('sort_area_size', -- pga
'hash_area_size',
'bitmap_merge_area_size',
'create_bitmap_area_size',
'workarea_size_policy',
'pga_aggreage_target',
'shared_pool_size',
'db_cache_size', -- sga
'large_pool_size',
'java_pool_size',
'streams_pool_size',
'sga_max_size',
'sga_targer',
'memory_target', -- pga+sga 관리
'memory_max_target'
);
# SQL (수동관리)
SELECT *
FROM v$parameter
WHERE name IN ( 'db_keep_cache_size',
'db_recycle_cache_size',
'db_2k_cache_size',
'db_4k_cache_size',
'db_8k_cache_size',
'db_16k_cache_size',
'db_32k_cache_size',
'log_buffer' );
SQL> show parameter memory
4. memory_target 값이 설정되어 있더라도 수동으로 sga_target, pga_aggregate_target 설정할 수 있다.
5. memory_target 값을 설정하면 기본적으로 SGA(60%), PGA(40%)
# SQL, 현재 메모리 구성 요소
SELECT * FROM v$memory_dynamic_components;
#SQL, 현재 메모리 크기 조정 작업 진행 상황
SELECT *
FROM v$memory_current_resize_ops;
# SQL, 현재까지 발생한 resize 작업에 대한 정보
SELECT *
FROM v$memory_resize_ops;