-
Oracle의 메모리 구조Database 2008. 8. 28. 12:04반응형
오라클 메모리 구조
: 오라클은 정보를 메모리와 디스크등에 저장 합니다. 가능하면 메모리에 원하는 정보가 있는 것이 훨씬 빠르고 효율적 입니다.- SGA (System Global Area)
: 오라클 프로세스들이 접근하는 하나의 큰 공유 메모리 세그먼트(Share Pool, DataBase Buffer Cache, Redo Log Buffer, Java Pool, Large Pool)
- PGA(Program Global Area)
: 한 프로세스 혹은 스레드의 개별적인 메모리 공간으로 다른 프로세스와 스레드는 접근 불가, 사용자마다 공유하지 않고 개별적으로 사용.PGA(Program Global Area)
◈ PGA 개념
- 서버 프로세스에 생성되며 오라클에서 사용하는 메모리 영역
- 데이터베이스에 접속하는 모든 유저에게 할당되어 각각의 서버 프로세스가 독자적으로 사용하는 오라클 메모리 영역
-PGA 구조
: 유저 프로세스가 요청한 작업을 수행하기 위해 필요한 영역으로 구성
1. sort area : order by 또는 group by 등의 정렬을 수행하기 위한 공간이며 해당 공간에서만 정렬이 완료 된다면 이를 메모리 정렬이라고 한다. 해당 정렬 메모리 공간이 부족하면 디스크를 이용한다.
2. session information : 서버 프로세스에 의해 추출된 결과 갑을 전달하기 위해 필요한 유저 프로세스에 세션정보를 저장.
3. cusor state : 해당 SQL 의 parsing 정보가 저장되어 있는 주소를 저장.
4. stack space : SQL 문장에 bind variable 를 사용했을 경우 해당 bind variable 를 저장하는 공간.
-하나의 유저 프로세스에 하나의 서버 프로세스가 할당되며,, 또한 하나의 서버 프로세스는 하나의 PGA 를 생성한다.
◈ PGA 관리
-오라클에서는 다음과 같은 파라미터에 의해 PGA 크기를 관리할 수 있다.
1. WORKAREA_SIZE_POLICY : MANUAL 과 AUTO 로 설정 할 수 있으며 AUTO 로 설정했을 경우에는 PGA_AGGREGATE_TARGET 파라미터를 이용하여 PGA의 크기를 설정하겠다는 뜻이다. MANUAL 로 설정할 경우는 SORT_AREA_SIZE 파라미터를 이용하여 정렬 공간을 설정하게 된다.
2. SORT_AREA_SIZE : 정렬 공간에 대한 크기를 설정하는 파라미터
3. PGA_AGGREGATE_TARGET : 모든 세션의 PGA 크기의 합을 설정하는 파라미터이며, PGA_AGGREGATE_TARGET 파라미에서 지정한 크기까지 오라클이 PGA 를 자동으로 관리한다. 정렬 작업의 양이 많아 더 큰 PGA 를 요구한다면 이 파라미터 값의 정해진 크기 내에서 할당가능하므로 처음에 충분히 크게 설정 해주어야한다.
-PGA 크기 확인SELECT * FROM v$process
* PGA_USED_MEM : 프로세스가 현재 사용하는 PGA 크기
* PGA_ALLOC_MEM : 프로세스에 할당된 PGA 의 크기 (사용 완료 후 시스템 메모리에 반환하지 않는 메모리 포함)SGA(System Global Area)
◈ SGA 개념
-오라클이 데이터를 읽거나 변경하기 위해 사용하는 공용 메모리 영역
-공용 메모리 영역이므로 동일 데이터베이스에 접속하는 모든 사용자는 동일 SGA 를 사용
-인스턴스가 시작될 때 시스템 메모리에서 할당 받으며 종료될때 다시 시스템 메모리 영역으로 반환.
◈ SGA 구조
- Shared Pool
- Data Buffer
- Redo Log Buffer
- Large Pool
- Java Pool
◈ SGA 관리
- SGA 변경SQL> ALTER SYSTEM SET parameter_name = 변경 값;
SQL> ALTER SYSTEM SET db_cache_size = 변경값; => Data Buffer cache
SQL> ALTER SYSTEM SET shared_pool_size = 변경값; => Shared Pool- SGA 확인
SQL> SHOW SGA
SQL> SELECT * FROM V$SGA;
SQL> SELECT * FROM V$SGASTAT;
SQL> SELECT * FROM V$SGA_DYNAMIC_COMPONENTS;- SGA 구조를 변경하는 작업은 사용하는 파라미터 파일의 종류에 따라 차이점이 존재
→ 정적 파라미터 파일 :데이터베이스가 재시작하게 되면 파라미터 파일(PFILE, initSID.ora) 에 설정딘 값을 재적용. 따라서 변경된 값을 유지하기 위해서는 파라미터 파일 (initSID.ora)에 해당하 변경 내용을 수정해야함
→ 동적 파라미터 파일 : 동적 환경 파일 (SPFILE, spfileSID.org) 을 사용하는 경우 ALERT SYSTEMM SET 명령어 뒤에 scope=BOTH 옵션을 추가하게 되면 변경된 값이 메모리와 동적 파라미터 파일에 동시에 적용되므로 데이터베이스 재시작 후에도 변경된 값이 적용된다.
◈ SGA 크기 확인
- V$SGA
- V$PARAMETER
- V$SPPARAMETER
- V$SGA_DYNAMIC_COMPONENTES
- shared parameter 명령어반응형