본문으로 바로가기

오라클은 데이터베이스와 이를 액세스하는 프로세스 사이에 SGA(System Global Area)라고 하는 메모리 캐시 영역을 두고 있다.

 

데이터베이스 : Datafile, Redo Log File, Control File 등의 집합

인스턴스 : SGA 공유 메모리 영역과 이를 액세스 하는 프로세스의 집합

 

프로세스 : 서버 프로세스와 백그라운드 프로세스의 집합

- 서버 프로세스   

 1) 최적화 수행 및 SQL을 실행하면서 결과 집합을 만듬

 2) 네트워크를 통해 전송하는 일련의 작업들을 모두 서버 프로세스 가 처리

 3) 서버프로세스만을 위한 독립적인 공간을 PGA(Program Global Area)

 

- 백그라운드 프로세스

 1) 데이터 파일로부터 DB버퍼 캐시로 블록을 적재

 2) Dirty 블록을 캐시에서 밀어냄으로써 Free 블록을 확보

 3) Redo 로그 버퍼를 비움

 

오라클 인스턴스

 

◎ 오라클 접속 과정

  1. LISTENER로 연결 요청

  2. LISTENER에서 프로세스 생성 연결요청 상속

  3. PGA(Program Global Area *서버 프로세스만을 위한 독립적인 공간) 에 메모리 생성

  4. SERVER에서 사용자에게 RESEND 패킷 전송

  5. 연결

오라클 접속 시

 

- 리스너에 연결요청을 하는 순간 하나의 프로세스를 띄우고 PGA 메모리를 할당한다.

- 오라클에 접속하는 어플리케이션을 구축할 때 반드시 커넥션 풀(Connection Pool) 기능이 필요하다

  (래치획득 과정을 줄임으로써 성능개선)

- 한번 커녁션을 맺으면 작업을 완료하더라도 이를 해제하지 않고 어플리케이션 서버에 Pooling하고 있다가

  반복 재사용

 

RAC(Real Application Cluster) 환경

- 기본적인 구성으로 오라클을 설치 시 하나의 데이터베이스에 접근하는 하나의 인스턴스가 생성되나 RAC환경에서는

  하나의 데이터베이스를 액세스하는 다중 인스턴스로 구성된다.

 

- RAC는 공유 캐시 방식(Shared Cache) 

  *과거에는 공유 디스크 방식(디스크 방식을 사용함으로써 생기는 동기화 과정을 핑(Ping)이라 불렀다.)

 

- 글로벌 캐시 개념을 사용하므로 로컬 캐시에 없는 데이터블록을 이웃 노드에 전송받아 서비스 할 수 있다.

 

- 다른 인스턴스에서 갱신하고 아직 커밋하지 않은 Active상태의 블록까지도 디스크를 경유하지 않고 Dirty버퍼 상태에

  서 네트워크를 통해 서로 주고받으며 수행한다.

 

- 여러개의 인스턴스가 하나의 데이터베이스를 액세스하는 것은 가능하지만, 하나의 인스턴스가 여러개의 데이터베이스

  를 액세스 하는것은 불가능하다.

  * DB Link는 일반 클라이언트 세션과 동일하게 Oracle Net을 이용해 SQL 기반으로 데이터를 읽고 쓰는 구조이므로

    아키텍처와는 별개로 이해가 필요하다.

 

 

 

출처

조시형,『오라클 성능 고도화 원리와 해법Ⅰ』