Oracle Database Architecture
Oracle Database Architecture
<전체적인 Oracle의 아키텍쳐>
메모리 부분에 생성되는 구조를 인스턴스(Instance)라고 부르며,
데이터가 저장되는 부분을 데이터파일(Datafiles),
DB전체의 관리정보가 들어있는 컨트롤파일 (Controlfiles),
장애 복구시 이용되는 리두 로그파일 (Redo log files)을 합쳐서 데이터베이스(Database) 라고 지칭합니다.
메모리에 생성되는 인스턴스는 크게 SGA (System Global Area) 와 백그라운드 프로세스 (Background Processes) 들로 나뉘어 집니다.
Startup 요청을 받은 최초의 Oracle Server Process가 파라메터 파일 (pfile or spfile)에 적혀있는 설정값을 참고해서 OS Kernel에게 공유 메모리를 사용할 수 있도록 할당해 달라고 요청합니다.
파라미터 파일은 SGA부분을 생성할때 참고하는 설계도 같은 역할을 합니다.
Oracle Server Process로부터 사용할 메모리 할당 요청을 받은 OS의 Kernel은 OS Kernel paramter를 조회하여, 설정되어 있는 내역으로 SGA를 할당해 주며, 다른 프로그램에서 사용하지 못하게 관리합니다. 하나의 메모리 블럭을 여러 프로그램이 동시에 중복 사용하는 사태를 막기 위해 OS차원에서 제공하는 세마포어(Semaphore)와 몇가지 Kernel Parameter 가 있습니다.
세마포어 (Semaphore)는 어떤 자원의 현재 사용 여부를 표현.
– Set / Unset 두가지 값을 가지고 있는데, 한개씩 사용하지 않고 세트로 묶어서 사용하게 됩니다. 세마포어가 Set 으로 되어 있으면, Process는 대기를 하고 있다가 unset으로 바뀌는 순간 세마포어를 Set으로 세팅하여 자원을 사용하게 됩니다.
세마포어와 관련된 OS Kernel Parameter
SEMMSL : 하나의 세마포어 세트당 세마포어의 최대 개수를 정의. 초기화 파라메터 값의 PROCESSES 변수의 최대값에 10을 더한 값을 사용 권장. (Oralce 11g 의 Processes 기본 값은 150)
SEMMNI : 세마포어 세트의 최대 개수. Oracle 권장값은 100 이상.
SEMMNS : 세마포어의 최대 개수. SEMMSL x SEMMNI 값보다 크거나 같아야 한다.
SEMOPM : 1call (1개의 시스템 호출)이 초당 호출 가능한 최대의 세마포어 개수를 정의. 일반적으로 SEMMSL과 동일하게 설정.
SHMMAX : 공유 메모리 세그먼트의 최대 크기(byte)를 정의.
SHMMNI : 공유메모리 세그먼트의 최대 개수. 기본값 4096. 변경 할 필요 없음.
SHMALL : 특정 시점에 시스템에서 사용 가능한 공유 메모리의 최대 크리 (페이지 단위).
SHMMIN : 단일 공유메모리 세그먼트의 최소크기
SHMSEG : 1개의 Process에 부여될 수 있는 공유메모리 세그먼트의 최대 개수.
위 파라메터들을 기초로 해서 SGA로 사용할 공유 메모리를 Oracle에 할당해 줄 때 3가지 방법으로 할당 할 수 있습니다.
- 공유 메모리로 사용할 물리적 메모리가 충분할 경우 하나의 세그먼트에 전체 SGA를 할당.
- 만약 하나의 세그먼트에 다 할당할 수 없다면 연속된 여러 세그먼트로 분산시켜 할당.
- 두번째 방법도 불가능 하다면 연속적이 아닌 여러 세그먼트에 분산 시켜 할당. 이때 유의할 점은 SGA내 Fixed Area 부분은 반드시 전체가 1 세그먼트에 할당되어야 합니다.
최신 댓글