본문 바로가기
Oracle/아키텍쳐

오라클 메모리 파라미터

by 취미툰 2019. 4. 15.
반응형

오라클에서 메모리 관련 파라미터 정리입니다.

 

bitmap_merge_area_size (default 1mb)
- 비트맵 인덱스가 있는 시스템에만 해당되고 인덱스의 range scan에서 검색된 비트맵을 병합하기 위해서 Oracle이 사용하는 메모리 양을 지정합니다. 비트 맵 세그먼트는 단일 비트 맵으로 병합되기 전에 정렬되어야 하므로 일반적으로 값이 클수록 성능이 향상된다. 
- 오라클에서 수정하는 것을 권장하지는 않음. PGA_AGGREGATE_TARGET을 사용해서 자동으로 관리하는 것을 권장.
client_result_cache_size (default 0)
- 클라이언트 당 프로세스 result set cache의 최대 크기를 바이트 단위로 지정한다.
- 0이 아닌 값을 설정하면 클라이언트 쿼리 캐시 기능을 사용할 수 있다.
- 이것은 클라이언트 구성 매개 변수 OCI_RESULT_CACHE_MAX_SIZE에 의해 무시 될 수 있다.
create_bitmap_area_size (default 8Mb)
- Oracle은 shared server에서 사용을 권장. 대신 PGA_AGGREGATE_TARGET파라미터를 설정해서 자동으로 사용하는 것을 권장.
- 비트맵 인덱스가 있는 시스템에만 해당되고 비트 맵 생성에 할당 된 메모리를 지정합니다. 값이 클수록 인덱스 생성 속도가 빨라질 수 있다.

data_transfer_cache_size
- RMAN RECOVER ... NONLOGGED BLOCK 명령을 실행하는 동안 인스턴스가 소비하는 데이터 블록 (일반적으로 Oralce Data Guard 환경의 primary 데이터 베이스)을 수신하는 데 사용되는 데이터 전송캐시의 크기를 설정한다.
- 이 파라미터는 자동 메모리 관리(AMM)을 사용하지 않고 RMAN RECOVERY..NONLOGGED BLOCK 명령을 사용하는 데이터베이스에 대해서만 설정해야 한다.
- 12c R2 부터 나온 파라미터
db_16k_cache_size
db_2k_cache_size
db_32k_cache_size
db_4k_cache_size
db_8k_cache_size
- nK 버퍼의 캐시 크기를 지정한다. DB_BLOCK_SIZE가 nK 이외의 값일때만 이 파라미터를 설정할 수 있다. 
- 예를들어 DB_BLOCK_SIZE = 4096인 경우. DB_4K_cache_size 파라미터를 지정하는 것은 올바르지 않다. ( 4KB 블록 캐시의 크기가 이미 DB_CACHE_SIZE에 의해 지정 되었기 때문이다)
- nK 블록 크기를 가진 온라인 테이블스페이스에 공간이 있으면 이 파라미터를 0으로 설정하지 마시길.
- 운영체제 별 블록 크기 제한이 적용된다. 예를들어 운영체제의 최대 블록 크기가 32KB 미만인 경우 DB_32K_cache_size를 설정할 수 없다. 또한 최소 블록크기가 2KB보다 큰 경우 DB_2K_cache_size를 설정할 수 없다.

db_cache_size
- 기본 블록 크기 (DB_BLOCK_SIZE 파라미터로 정의된 블록크기)를 갖는 버퍼에 대한 DEFAULT 버퍼 풀의 크기를 지정한다.
- SGA_TARGET이 설정되어 있으면 0이고 자동으로 Oracle이 지정해 준다.
- SGA_TARGET이 설정되어 있지 않으면 48MB or 4MB * number of CPUs * granule size

db_flash_cache_size
- 플래시 캐시의 크기를 지정한다. 이 파라미터는 인스턴스 시작시에만 지정될 수 있다.
- DB_fiash_cache_file로 지정된 각 플래시 메모리 장치에 대해 최대 16개의 파일 크기를 지정할 수 있다.
- 예를 들어 플래시 원시 장치가 세개인 경우 다음과 같이 각 장치의 크기를 지정할 수 있다.
--db_flash_cache_file = /dev/raw/sda, /dev/raw/sdb, /dev/raw/sdc
--db_flash_cache_size = 32G, 32G, 64G
- 플래시 캐시가 하나의 플래시 캐시 장치로 구성된 경우, 데이터베이스가 시작된 후 해당 플래시 개시 장치에 대해 이 파라미터를 0으로 동적으로 변경할 수 있다.(비활성화) 후에 재시작시 파라미터값을 원래대로 설정하여 활성화 시킬수 있다.


db_keep_cache_size
-keep 버퍼 풀의 크기를 지정한다. keep 버퍼풀의 버퍼 크기는 기본 블록 크기(DB_BLOCK_SIZE 초기화 매개 변수로 정의된 블록크기)이다.


db_recovery_file_dest_size
- 플래시 복구 영역에서 생성 된 대상 데이터베이스 복구 파일이 사용할 총 공간에 대한 하드 제한을 바이트 단위로 지정한다.

db_recycle_cache_size
- recycle 버퍼 풀의 크기를 지정한다. recycle풀의 버퍼 크기는 기본 블록 크기(DB_BLOCK_SIZE 초기화 매개 변수로 정의된 블록크기)이다.

hash_area_size (default 2*sort_area_size)
- 병렬 실행 작업 및 DML 또는 DDL 문의 쿼리 부분과 관련이 있다. 해시 조인에 사용되는 메모리의 최대크기를 지정한다.
- shared server에서 이 파라미터를 사용하는것을 권장. PGA_AGGREGATE_TARGET을 설정하여 자동으로 관리하는 것이 좋다.

inmemory_size (default 0)
- 데이터베이스 인스턴스에 인 메모리 컬럼 저장소의 크기를 설정한다.
- 파라미터를 설정한 후 데이터베이스를 다시 시작해야 사용할 수 있다.
- 이 파라미터의 최소 크기는 100MB이다.
- 이 파라미터는 IM 열 저장소를 사용할 모든 테이블을 수용하는데 필요한 크기 이상으로 설정해야 한다.
- PDB에 대한 IM 저장소의 최대 크기를 제한하기 위해 PDB별로 설정 할 수도 있다. 각 PDB값의 합계가 CDB 값보다 클 수 있다.

inmemory_xmem_size


java_max_sessionspace_size
- java 세션 공간은 한 데이터베이스 호출에서 다른 데이터베이스 호출로 java 상태를 보유하는 메모리이다.
- 이 파라미터는 서버에서 실행중인 java 프로그램에 사용 가능한 최대 세션 공간을 바이트 단위로 지정한다.
- 사용자의 세션 기간 Java 상태가 이 양을 초과하면 java 가상 시스템은 메모리 부족오류로 세션을 종료한다.

java_pool_size
- java 메모리 관리자가 런타임 실행 중에 대부분의 java 상태를 할당하는 java 풀의 크기를 바이트 단위로 지정한다.
- 이 메모리에는 java 메소드 및 클래스 정의의 공유 메모리내 표현뿐 아니라 호출 종료시 java 세션 공간으로 마이그레이션 되는 java 오브젝트가 포함된다.

java_soft_sessionspace_limit
- java세션공간은 한 데이터베이스 호출에서 다른 데이터베이스 호출로 java 상태를 보유하는 메모이이다.
- 세션의 java 메모리 사용에 대한 소프트 제한을 지정한다.
- 이는 사용자의 세션 기간 java 상태가 너무 많은 메모리를 사용하고 있을때 경고하는 수단이며 사용자의 세션기간 중 java 상태가 이 크기를 초과하면 oracle은 trace file로 경고를 발생시킨다.

large_pool_size
-라지풀의 할당 힙의 크기를 지정한다.
- 라지풀 할당 힙은 세션 메모리, 메시지 버퍼의 병렬 실행 및 디스크 I/O버퍼의 백업 프로세스를 위해 공유 서버 시스템에서 사용된다.
- 병렬 실행은 SGA_TARGET이 설정된 경우에면 라지풀에서 버퍼를 할당한다.

memoptimize_pool_size
- 18c에 등장한 뉴피처
- SGA내의 메모리영역인 memoptimize pool을 관리하는 파라미터

memory_max_target
- DBA가 MEMORY_TARGET 파라미터를 설정할 수 있는 최대값을 지정한다.

memory_target
- Oracle 시스템 전체에서 사용 가능한 메모리를 지정한다. 이 파라미터를 토대로 PGA와 SGA를 조절한다.
- pfile에 memory_max_target을 생략하고 memory_target값을 포함하면 자동으로 max값은 memory_target값으로 설정된다.
- memory_target값을 생략하고 memory_max_target값을 포함하면 memory_target값은 0이다.
- startup 후 memory_target을 memory_max_target값을 초과하지 않는 한 동적으로 0이 아닌 값으로 변경할 수 있다.


object_cache_optimal_size
- 오브젝트 캐시는 클라이언트에서 메모리 블록으로 응용프로그램이 전체 객체를 저장하고 서버로 왕복하지 않고 객체를 탐색할 수 있게 한다.
- 이 파라미터는 캐시 크기가 최대 크기를 초과할 때 세션 오브젝트 캐시가 축소되는 크기를 바이트 단위로 지정한다.

olap_page_pool_size
- OLAP 풀의 크기를 바이트 단위로 지정한다.

pga_aggregate_limit
- 인스턴스가 소비한 aggregate PGA 메모리의 한계를 지정한다.
- 명시적으로 설정되거나 기본값으로 설정되는 PGA_AGGREGATE_LIMIT 사이에는 동작에 차이가 없다.



pga_aggregate_target
- 인스턴스에 연결된 모든 서버 프로세스가 사용할 수 있는 대상 aggregate PGA 메모리를 지정한다.
- 0이 아닌 값으로 설정하면 WORKAREA_SIZE_POLOCY 매개 변수를 AUTO로 설정하는 효과가 있다. (메모리 집약적인 SQL 연산자(정렬,그룹화,해시조인,비트맵 병합 및 비트맵 작성과 같은)에서 사용되는 SQL 작업 영역은 자동으로 크기가 조절됨 10MB 또는 SGA의 20%)
- 0으로 설정하면 WORKAREA_SIZE_POLOCY가 MANUAL로 설정된다. (_AREA_SIZE 파라미터를 사용하여 크기가 조정된다)
- MEMORY_TARGET이 양수 값으로 설정되어 자동 메모리 관리가 사용가능하고 PGA_AGGREGATE_TARGET도 양수로 설정된 경우. PGA_AGGREGATE_TARGET값은 인스턴스 PGA의 크기에 대한 최소값으로 작용한다.

result_cache_max_size
- result cache가 사용할 수 있는 SGA메모리의 최대 크기를 지정한다.
- 0보다 큰 경우 32KB의 다음 배수로 반올림된다. 0이면 기능이 비활성화 된다.

sga_max_size
- 인스턴스가 살아있는 동안 SGA의 최대 크기를 지정한다.
- 64비트 플랫폼 그리고 비 윈도우32비트 플랫폼에서 memory_target 또는 memory_max_target이 지정되면 기본값인 SGA_MAX_SIZE가 두 파라미터 중 큰 값으로 설정된다. 이로 인해 더 많은 주소공간이 SGA의 확장을 위해 예약된다.


sga_min_size
- PDB에 대해 보장된 SGA 크기를 설정한다.
- 이 파라미터가 설정되면 PDB에 대해 지정된 SGA 크기를 보장한다.

sga_target
- 이 파라미터가 지정되면 DB_CACHE_SIZE, SHARED_POOL_SIZE, LARGE_POOL_SIZE, JAVA_POOL_SIZE,STREAMS_POOL_SIZE가 자동적으로 변경된다.
- 0이 아닌 값으로 설정된 경우 자동 공유메모리 관리(ASMM)에 의해 최소 레벨로 사용된다. 
- 0은 비활성화
shared_pool_reserved_size
- shared_pool 메모리에 대한 다량의 요청에 대한 예약 공간을 지정한다.
- 오라클이 현재 어디에도 사용하지 않는 풀의 free churcks를 찾고, 풀 조각화가 발생하는 상황일 경우, shared_pool의 성능 저하를 피하기 위해 이 파라미터를 사용할 수 있다.

shared_pool_size
- 공유풀의 크기를 바이트 단위로 지정한다. 공유 풀에는 공유 커서, 저장 프로시저, 제어구조 및 기타 구조가 포함된다.
- parallel_automatic_tuning을 false로 설정하면 oracle은 공유 풀에서 병렬 실행 메시지 버퍼를 할당한다. 값이 클수록 다중 사용자 시스템의 성능이 향상된다. 값이 작을수록 메모리가 적게 사용된다.

sort_area_retained_size
- 정렬 실행이 완료된 후에 유지되는 UGA메모리의 최대 크기를 바이트 단위로 지정한다. 보존된 크기는 일기 퍼의 크기를 제어한다. 오라클은 메모리의 정렬부분을 유지 관리하는데 사용한다. 이 메모리는 정렬 공간에서 마지막 행을 가져온 후 운영체제가 아닌 UGA로 다시 릴리스된다.
- 오라클은 각 쿼리에 대해 여러 정렬 공간을 할당할 수 있다. 복잡한 쿼리의 경우에도 한번에 하나 또는 두개의 정렬만 발생하는데 경우에 따라 추가 동시 정렬이 필요하며 각 정렬마다 고유한 메모리 영역이 유지된다. 공유 서버가 사용되면 sort_area_retained_size의 값에 도달할때까지 SGA에 할당된다.
-sort_area_retained_size와 sort_area_size의 차이는 PGA에 할당된다.
- 이 값은 sort_area_size의 값과 같거나 작아야한다.
- 정렬후에도 유지하고자 하는 sort_area_size를 나타낸다.

sort_area_size
- SGA영역에 속하지 않는 사용자 프로세스 별로 사용하게 되는 sort 영역의 크기를 말한다.
- 이 파라미터의 크기는 세션별로 지정 가능하며 지정하기 위해서는 alter session 권한이 있어야 한다.
- 일반적으로 권고되는 값은 65k에서 1mb사이에서 결정된다.
- index생성시, order by group by문, select distinct 문, union,intersect,minus , sort-mergr-join, analyze command시 sort가 발생한다.
- 크기가 작으면 temp tablespace를 사용하게 되거나 swapping이 발생하여 시스템 성능이 저하되므로 적절한 크기로 튜닝이 필요하다.

streams_pool_size

unified_audit_sga_queue_size
- 통합 감사를 위한 SGA 대기열의 크기를 지정한다.
- 이 파라미터는 대기열 기록모드가 통합 감사에 사용될 때 유용할 수 있다.

반응형

'Oracle > 아키텍쳐' 카테고리의 다른 글

Character Set  (1) 2020.04.20
오라클 19c 아키텍쳐 소개  (0) 2020.03.05
인덱스 스플릿(INDEX SPLIT)  (0) 2019.12.30
[인덱스] 인덱스 생성 아키텍처  (0) 2019.11.06
오라클 필수 백그라운드 프로세스  (0) 2019.04.09

댓글