오라클 인스턴스(Oracle Instance)와 오라클데이터베이스(Oracle Database)로 구성
오라클 인스턴스(Oracle Instance = SGA)
백그라운드 프로세스와 메모리 버퍼(Memory Buffer)로 구성
시스템 글로벌 영역(SGA, System Glober Area)
오라클 데이터베이스 모든 사용자의 제어 정보와 데이터를 포함하며, 사용자가 실행하는 SQL문에 의해 검색 또는 변경되는 테이블 데이터를 저장하는 오라클 서버의 공유 메모리 영역
하나의 SGA와 오라클 프로세스가 하나의 오라클 인스턴스를 구성
오라클은 인스턴스가 시작될 때(오라클서버 시작시) 자동으로 SGA를 위한 메모리를 할당하고, 인스턴스를 종료(Shutdown)하면 운영체제가 메모리를 회수
SGA는 여러 사용자가 공유
오라클 구조
공유 풀(Shared Pool)
구성 : 라이브러리 캐시(Library Cache)와 데이터 사전 캐시(Data Dictionary Cache), 그리고 버퍼로 구성
공유SQL영역 : SQL문장 하나를 실행하는데 이용된 정보를 가지고 있으며 동일한 SQL문장을 실행하는 프로세스들 간에 정보를 공유, 완전히 동일한 문장만 같은 메모리에 위치
데이터사전 캐시 : 데이터베이스와 그 구조, 데이블과 뷰의 이름, 테이블이 컬럼명과 데이터 유형, 모든 사용자 권한
데이터베이스 버퍼 캐시(Database Buffer Cache)
디스크로부터 읽어온 블록의 데이터의 복사본을 보관하는 메모리 영역
사용자가 실행한 SQL문에 정의된 테이블이 존재하는 데이터 파일로부터 테이블을 읽어서 저장하는 공간으로 데이터 수정이 일어나기 전의 데이터를 보관하는 Before Image와 수정한 후의 데이터를 보관하는 After Image로 구성
캐시 실패: 데이터를 처음 Access하면 서버 프로세스는 디스크로부터 데이터를 읽어 캐시에 올린다.
캐시 적중: 데이터에 Access할 때 이미 캐시에 있다면 메모리에서 직접 데이터를 읽는다.
리두 로그 버퍼(Redo Log Buffer)
데이터베이스에서 일어난 모든 변화를 저장하는 메모리 공간
데이터베이스에서 발생한 모든 변화는 LGWR에 의해 리두로그 파일에 저장
리두로그 버퍼는 데이터베이스의 변경 사항 정보를 유지하는 SGA에 있는 Circular(순환) 버퍼임
리두로그 버퍼의 크기는 오라클 파라미터 LOG_BUFFER에서 지정
라지 풀(Large Pool)
데이터베이스 관리자가 필요한 경우 사용할 수 있는 선택적인 메모리 영역
많은 메모리를 필요로 하는 경우 설정해서 사용
: 오라클 공유 서버의 인터페이스를 위한 세션 메모리, I/O 서버 프로세스, 오라클 백업과 복구, 병렬 실행 메시지 버퍼 설정시
오라클 데이터베이스의 세가지 물리적인 구성 요소
프로세스 : 백그라운드 프로세스(DBWR, LGWR, PMON, SMON)와 사용자 프로세스, 서버 프로세스로 구성
메모리 : 공유풀, 데이터 버퍼캐시, 로그버퍼, 라지풀
파일 : 데이터 파일, 컨트롤 파일, 리두로그 파일, 파라미터 파일
사용자 프로세스(User Process)
Pro*C/C++와 같은 응용 프로그램이나 엔터프라이즈매니저와 같은 오라클 툴을 실행할 때 사용되는 프로세스
사용자가 실행시킨 SQL문을 서버 프로세스에게 전달하기 위해 사용
사용자 프로세스에는 데이터베이스 접속시 사용된 사용자 이름과 패스워드 정보, 접속된 시간 등의 정보가 저장
오라클 프로세스(Oracle Process)
오라클 데이터베이스 서버를 기동하는데 필요한 프로그램들을 의미
구성
서버 프로세스(Server Process)
데이터베이스 내의 물리적인 구조(디스크에 저장된 데이터파일)와 메모리 구조(SGA 영역)사이를 관리하는 프로세스
구문분석(Parse) : 구문상의 정확성, 보안엑서스, 최적화된 실행계획 수립
실행(Execute) : 문장의 실행, 데이터 읽기와 변경
인출(Fetch) : Select구문일 경우 그 결과를 사용자에게 전달한다
백그라운드 프로세스(Background Process) : 물리적으로 저장된 데이터들을 메모리(데이터베이스 버퍼캐시)에 올리는 역할을 하는 프로세스
오라클 데이터베이스의 현재 상태를 모니터링하거나 사용자가 실행한 SQL문을 처리해주는 프로세스
5개의 필수 백그라운드 프로세스와 그 외 다수의 프로세스 포함
필수 백그라운드 프로세스 : 오라클 인스턴스가 가동될 때 시작하고 인스턴스가 중지되면 정지되는 프로세스
-> 데이터베이스 기록기 : Database Writer(DBWR) 프로세스
-> 로그 기록기 : LGWR(Log Writer) 프로세스
-> 시스템 모니터 : SMON(System Monitor) 프로세스
-> 프로세스 모니터 : PMON(Process Monitor) 프로세스
-> 체크 포인트 : CKPT(Check Point) 프로세스