SGA(System Global Area)가 memory 영역 이고, 흰색 박스들이 process 영역 이다.
SGA는 Shared Memory 영역이다.
오라클 서버가 시작되면 메모리에 SGA가 할당이 된다.
DBMS에 대한 데이터와 제어 정보를 갖고 있다.
여러 사용자간에 공유가 되므로, 간혹 Shared Global Area라고 부르기도 한다.
SGA는 크게 세 부분으로, _Shared Pool, Data Buffer Cache, Redo Log Buffer_로 나뉘어진다.
Shared Pool
Shared Pool은 다시 _Shared SQL Area, Dictionary Cache_로 나뉘어진다.
Shared SQL Area
사용자가 SQL 문장을 실행했을 때, 해당 문장 자체, 해당 문장의 파싱된 형태, 그리고 실행 계획에 대해 Shared SQL Area에 저장된다.
그 후 다시 동일한 문장이 실행될 경우 서로 다른 프로세스들끼리 이것을 공유할 수가 있다.
완전히 동일한 문장이면 같은 메모리 주소에 위치해있음.
Shared SQL Area는 Library Cache라고 부르기도 한다.
Dictionary Cache
Dictionary Cache란, data dictionary 정보와 해당 데이터베이스의 논리적 스키마 정보를 담고 있다. 예) 모든 테이블과 뷰의 이름, 테이블의 컬럼 명과 데이터 유형, 모든 사용자의 권한
SQL 문장이 실행될 경우, 이 스키마에 IO가 빈번하게 발생할텐데, 이것이 디스크에 있을 경우 빈번한 IO에 의해 디스크 부하가 생길 수 있다. 그래서 SGA에 놓고 빠르게 IO를 진행한다.
Database Buffer Cache
Database Buffer Cache : 디스크의 IO를 줄이기 위해.. 디스크에서 읽은 데이터 블록의 복사본을 담고 있다. 동시 접속자끼리 공유함.
캐시 적중율을 높이는 것은 중요한 Tuning Point다. Hit Ratio를 85%~90%정도로 유지하는 것이 좋다.
Redo Log Buffer
Redo Log Buffer : 데이터베이스의 모든 변경된 정보를 갖고 있다. 롤백을 위한 자료공간이다.
Redo Log Buffer에 입력하는 것 자체는, IO 부하를 줄 수가 있다. 그러므로, 부하를 줄이기 위해 CREATE TABLE이나 CREATE INDEX 등에 UNRECONVERABLE 키워드를 붙힐 수 있다.
Process
필수 프로세스
PMON, SMON DBWR, LGWR은 오라클 인스턴스를 실행하기 위한 필수적인 프로세스이다. 오라클이 직접 제어하는 것이라 사용자가 임의로 조작할 수 없다.
PMON : process monitor, 비정상 종료된 프로세스등을 모니터링하다가 처리. 실패한 프로세스가 SGA에 할당되었을 경우, 메모리를 클리닝하는 작업 등도 진행한다.
SMON : system monitor, 인스턴스 자동 복구, 더이상 사용하지 않는 temporary segment 공간을 회수. temporary segment는 프로세스 정리 상 정렬 작업이 필요할 경우가 생기는데, 임시적으로 이에 할당해주는 공간이다. 작업이 끝나면 회수 됨.
DBWR : db writer, data buffer cache의 내용을 data file에 기록. 사용자 프로세스가 비어있는 버퍼를 찾을 수 있도록 관리.
LGWR : log writer, redo log buffer의 내용을 redo log 파일에 기록.
기타 프로세스
오라클 기타 프로세스, 앞선 필수 프로세스들과 달리, 사용자가 파라미터나 옵션을 조정하여 이들을 실행할 수도 안 할 수도 있는 프로세스들.
SNPn : snapshot process, 분산 DB에서 스냅샷을 자동 리프레쉬해줌.
LCKn : lock process, Oracle Parallel Server System(OPSS)에서 인스턴스 간 locking을 수행한다. 하나의 DB를 여러 개의 인스턴스가 공유하기 때문에 인스턴스 간 lock이 필요하다.
RECO : recovery process, 분산 tracsaction의 실패를 복구한다.
Pnnn : parallel process, 병렬 질의, 병렬 인덱스 생성, 병렬 데이터 로드 등의 병렬 작업을 관리
댓글