1.오라클 내부 구조 (Oracle Architecture)

오라클은 크게 인스턴스(Instance)와 데이터베이스로 나눌 수 있습니다. 인스턴스는 크게 SGA (System Global Area) 등 메모리 영역과 Background Process 등의 서버프로세스로 구성됩니다.
SGA영역은 오라클이 사용하는 메모리 영역으로 $ORACLE_HOME/dbs/inin$ORACLE_SID.ora 파일에 정의된 값에 따라 세팅됩니다. SGA 영역을 세분화 하면 Database buffer cache와 Redo log buffer, Shared pool 영역으로 구성됩니다. 각 영역마다 저장되는 데이터가 다른 것이죠. Background Process들도 각 작업마다 분담하여 수행하게 됩니다. 기본적으로 DBWR, LGWR, PMON, SMON이 있고 네트워크환경의 데이터의 분산기능과 일관성, 백업기능을 지원하기 위해 추가로 RECO, LOCK, ARCH, Dispatcher 등이 있습니다.

오라클 데이터베이스는 데이터를 저장하는 부분으로 물리적인 구조를 보면 데이터파일, 데이터 변경에 대한 히스토리를 저장하고 데이터의 안정성을 위한 로그 파일, 데이터베이스의 전체적인 구조를 저장하고 있는 제어 파일로 구성됩니다. 그리고 Background Process와 SGA영역의 크기에 대한 값을 저장하는 파라미터 파일이 있습니다.


1-1 오라클 메모리 구조

오라클이 사용하는 메모리 영역을 보면 크게 Software Code Area, PGA(Program Global Area), SGA(System Global Area)로 나눌 수 있습니다.


1-1-1 Software Code Area

오라클의 실행 모듈이 할당되는 메모리 공간입니다. 수행중이거나 수행 될 수 도 있는 모듈이 대체로 stack에 올려져 있으며 소프트웨어가 update 되거나 재 인스톨 될 때 변경되어 질 수 있습니다. 일반 유저 프로그램이 접근할 수 없고, 크기는 O/S에 따라 약간씩 다르지만 Virtual Memory에 위치하기도 합니다.

1-1-2 SGA(System Global Area)

오라클 인스턴스의 한 부분으로 인스턴스가 Startup 할 때 메모리에 할당되는 작업 영역입니다. 이 영역은 오라클이 기동중에 사용되는 데이터나 각종 정보들 그리고 일반 유저들의 모든 SQL 문장들이 이곳에서 실행됩니다. init$ORACLE_SID.ora 파라미터 파일의 메모리변수들에 의해서 SGA영역의 크기가 정해집니다. SGA 영역은 클수록 성능상 이점이 있지만 Real Memory 영역에 위치할 수 있도록 적절히 조절해야합니다.