반응형
오라클 11g ASMM 메모리관리

ASMM기능을 사용하기위해서 다른설정은 확인할 필요가없고
MEMORY_MAX_TARGET 과 MEMORY_TARGET이 중요하다. 실제 물리메모리 크기에 50%정도를 잡아서
사용하면되므로 물리적으로 8G가 있다면 4G로 설정하면 된다.
나는 5G로 설정했다. 한가지 주의할점은  SGA_MAX_TARGET, SGA_TARGET등은 수정할수없다.
자동으로 알아서 설정해준다.



메모리확인 쿼리

SELECT  component,
        current_size/1024/1024 "Current_Size (MB)",
        min_size/1024/1024     "Min_Size (MB)"    ,
        max_size/1024/1024     "Max_Size (MB)"
FROM    v$memory_dynamic_components
WHERE   current_size != 0;

SGA메모리확인



실제 메모리는 

sqlplus  "/as sysdba"
show parameter memory;

SQL> show parameter memory

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
hi_shared_memory_address             integer     0
memory_max_target                    big integer 1G
memory_target                        big integer 1G
shared_memory_address                integer     0
SQL> show parameter sga

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
lock_sga                             boolean     FALSE
pre_page_sga                         boolean     FALSE
sga_max_size                         big integer 2464M
sga_target                           big integer 0



메모리수정 ; 
SQL> alter system set memory_max_target=5G scope=spfile;
SQL> shutdown immediate;

바로 STARTUP을 하면

SQL> startup
ORA-27102: out of memory
OSD-00022: additional error information
O/S-Error: (OS 8) 사용 가능한 저장소가 부족하여 이 명령을 처리할 수 없습니다.

이렇게 오류가 나온다. 리눅스와 다르게 윈도우는 관리에서
서비스 리스타트 해야 메모리 반환되서 다시 오라클이 메모리할당을 다시한다.



수정후확인


SQL> show parameter memory

NAME                                 TYPE        VALUE
------------------------------------ ----------- ---------
hi_shared_memory_address             integer     0
memory_max_target                    big integer 5G
memory_target                        big integer 4G
shared_memory_address                integer     0
SQL> show parameter sga

NAME                                 TYPE        VALUE
------------------------------------ ----------- ---------
lock_sga                             boolean     FALSE
pre_page_sga                         boolean     FALSE
sga_max_size                         big integer 3G
sga_target                           big integer 0
SQL>




참조 : http://blog.naver.com/tlswoals21/120151499573



-Managing Memory Components(메모리 관리)


메모리를 적절하게 할당하지 않으면 io도 많이생기고 느려진다


1)Automatic Shared Memory Management (ASMM)


SGA메모리 부분들을 따로 따로 설정하는방법 


전체를 SG_TARGER을 보고 자동적으로 관리하는 기법


** Automatic Shared Memory Management(ASMM) **


ASMM의 장점


상대적으로 사용량을 적은 transper가 가능하다 

(ex) sharedpool 일부분을 Buffer cache가 사용한다


show parameter shared_pool_size

show parameter db_cache_size

show parameter sga_target (동적으로 변경할수  있다)

show parameter sga_max_size (동적으로 변경이 불가능하다)


모든 SGA 구성요소는 SGA_MAX_SIZE를 초과할 수 없다.

(SGA_TARGET 포함) 


1. 자동 (임의값을 모를때)


SGA_TARGET = value 


(SGA_TARGET만 설정한다)


DB_CACHE_SIZE = 0

SHARED_POOL_SIZE = 0

LARGE_POOL_SIZE = 0

JAVA_POOL_SIZE = 0

STREAMS_POOL_SIZE = 0



2. 반자동 (경험수치가 있다면 상당히 좋은 방식)


SGA_TARGET = value 


(SGA_TARGET값도 쓰고 , 밑에 값도 일부분 사용한다)

아래 구성요소중 설정된 값은 하한 값으로 작용


DB_CACHE_SIZE = value

SHARED_POOL_SIZE = value

LARGE_POOL_SIZE = value

JAVA_POOL_SIZE = value

STREAMS_POOL_SIZE = value



3. 수동 (권장하는 방식이 아니다 (현실은 수동을 많이 사용하고 있다))

  

(dba가 적절한사이즈를 미리알고 적절할게 변경할수 있다면 수동으로 사용해도 괜찬다(실제로 그렇게 하기 힘들다)


9i 이하 방식처럼 구성요소 각각 설정


SGA_TARGET = 0


(SGA_TARGET을 0으로 두고 따로따로 설정하는 방식)


DB_CACHE_SIZE = value

SHARED_POOL_SIZE = value

LARGE_POOL_SIZE = value

JAVA_POOL_SIZE = value

STREAMS_POOL_SIZE = value


SQL> show parameter sga_target


NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

sga_target                           big integer 272M

SQL>


SQL> show parameter db_cache_size


NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_cache_size                        big integer 0

SQL>


SQL> show parameter shared_pool_size


NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

shared_pool_size                     big integer 0



alter system set sga_target=0; (비활성화 시킨다)


alter system set sga_target=272;(다시 활성화 시키는것)  (SGA SIZE가 272이다)



반응형

+ Recent posts