오라클은 데이터베이스와 이를 액세스하는 프로세스 사이에 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환경에서는
하나의 데이터베이스를 액세스하는 다중 인스턴스로 구성된다.
- RAC는 공유 캐시 방식(Shared Cache)
*과거에는 공유 디스크 방식(디스크 방식을 사용함으로써 생기는 동기화 과정을 핑(Ping)이라 불렀다.)
- 글로벌 캐시 개념을 사용하므로 로컬 캐시에 없는 데이터블록을 이웃 노드에 전송받아 서비스 할 수 있다.
- 다른 인스턴스에서 갱신하고 아직 커밋하지 않은 Active상태의 블록까지도 디스크를 경유하지 않고 Dirty버퍼 상태에
서 네트워크를 통해 서로 주고받으며 수행한다.
- 여러개의 인스턴스가 하나의 데이터베이스를 액세스하는 것은 가능하지만, 하나의 인스턴스가 여러개의 데이터베이스
를 액세스 하는것은 불가능하다.
* DB Link는 일반 클라이언트 세션과 동일하게 Oracle Net을 이용해 SQL 기반으로 데이터를 읽고 쓰는 구조이므로
아키텍처와는 별개로 이해가 필요하다.
출처
조시형,『오라클 성능 고도화 원리와 해법Ⅰ』
'자격증 > SQLP' 카테고리의 다른 글
[오라클 성능 고도화] 오라클 아키텍처 - 02. DB 버퍼 캐시 (0) | 2020.08.12 |
---|