오라클 서버는 크게 인스턴스와 데이터베이스로 이루어져 있다. 여기서 오라클 서버의 인스턴스는 오라클 서버가 사용하는 메모리 영역을 말하며 데이터베이스는 오라클 서버가 사용하는 디스크 또는 물리적인 영역이라고 할 수 있다.
SGA: System Global Area
BGP: Background Process
SGA와 연동하는 사용자 프로세스(User process)와 서버 프로세스(Server process)가 존재하는 것을 볼 수가 있다. 오라클 서버와 외부에서 접속하는 클라이언트 프로그램들과의 연동 부분에 사용되는 프로세스들이며 오라클 서버를 운영하는데 중요한 부분을 담담당하고 있다. 사용자 프로세스에서 서버 프로세스로 넘어가는 과정에서 각 사용자들의 요청을 전반적으로 관리해 주는 프로세스이기 때문이다. DML과 같은 내용을 전반적으로 관리하는 역할을 한다.
오라클 인스턴스의 기본 구조는 SGA 영역과 다수의 BGP 들로 구성되어 있고 SGA 영역 내부에는 여러 메모리 요소들로 구성되어 있다.
- 공유 풀(Shared pool)
- 데이터베이스 버퍼 캐시(Database buffer cache)
- 리두 로그 버퍼(Redo log buffer)
- 라지 풀(Large pool)
- 자바 풀(Java pool)
SGA를 이루는 대부분 메모리 요소들의 가장 중요한 역할은 대게 성능 향상에 목적을 두고 있다. DBA 실무자라면 성능 튜닝에 대해 한번쯤은 버퍼 캐시와 공유풀에 대해 고민해 보며 수정해 본 경험이 있을 것이다. 쿼리 질의가 시작되면 SQL에 따라 다르겠지만 복잡한 구조의 Parse 과정을 거친다. SQL도 결국 각 영역에 Tree 구조로 나뉘는데 매번 이러한 과정을 거친다면 서버에 부하가 많아진다. 이를 개선하기 위한 것들이 공유 풀과 데이터베이스 버퍼 캐시에 관한 것들이다.
BGP(Background Process) 주요 구성
- PMON
- SMON
- DBWR
- LGWR
- CKPT
인스턴스 영역과 데이터베이스 영역을 연결해 주는 연결 통로로서의 역할(DBWR, LGWR)과 데이터 복구 수행 역할(SMON), 데이터베이스 일관성 유지 역할(CKPT), 사용자 세션관리 역할(PMON)로 각 영역별로 백그라운드 프로세스를 구성하고 있다. 버전이 높아짐에 따라 백그라운드 프로세스도 늘어날 것이므로 버전 별로 어떤 것들이 있는지 찾아보는 것도 좋다.
데이터베이스 기본구조
데이터베이스는 기본적으로 세 가지 요소로 나눌 수 있다.
- 컨트롤 파일
- 데이터 파일
- 리두 로그 파일
- 데이터 파일은 시스템 데이터와 애플리케이션 데이터를 물리적으로 저장하는 곳이다.
- 리두 로그 파일은 데이터베이스 내부에서 임의 변경 작업이 발생하는 경우 리두 로그라는 변경 정보가 생성되며 변경 정보들이 물리적으로 저장하는 공간이 리두 로그 파일이다.
- 컨트롤 파일은 Consistency에 대한 정보와 물리적인 데이터베이스 구조 정보를 관리하는 영역을 말한다.
정리
인스턴스 영역
- 공유 풀(Shared pool)
- 데이터베이스 버퍼 캐시(Database buffer cache)
- 리두 로그 버퍼(Redo log buffer)
- 라지 풀(Large pool)
- 자바 풀(Java pool)
백그라운드 프로세스 영역
- PMON
- SMON
- DBWR
- LGWR
- CKPT
데이터베이스 기본구조
- 컨트롤 파일
- 데이터 파일
- 리두 로그 파일