![](https://velog.velcdn.com/images/dev_mj/post/3df74019-465f-476d-a735-63601bcdf623/image.png)
1. Listener : 유저 프로세스 커넥션 요청을 기다리고, 요청이 들어오면 DBMS에 전달한다.
2. Database Server Process : 유저 요청을 받아 DBMS에서 프로세스를 생성한다. 클라이언트는 이 프로세스를 통해서 DBMS와 상호작용 한다.
3. PGA(Program Global Area) : 개별 사용자 세션 또는 커넥션에 대한 메모리 영역으로 세션마다 독립적이다.
4. SGA(Sharable Global Area) : 여러 사용자 간 공유 되는 메모리 영역.
- Shared Pool : SQL문, 테이블 및 인덱스의 메타데이터, 공유 SQL과 PL/SQL 저장. 하드파싱 된 sql문을 캐싱 해놨다가 같은 내용의 쿼리가 오면 소프트 파싱 해서 재사용 하게 됨.
- Large Pool : 대용량 메모리 요구사항 처리시 사용.
- Redo log buffer : 모든 트랜잭션에 대한 정보가 저장 되는 버퍼. LGWR 백그라운드 프로세스를 타고 로그파일로 저장 된다.
4. Background Processes :
- CKPT : 데이터베이스 변경 내용을 주기적으로 데이터 파일에 기록
- SMON : 비활성 트랜잭션의 롤백, 잠금 해제, 오브젝트의 재사용 등 db 인스턴스(system) 관리작업 수행
- PMON : user process 장애 발생시 회복 작업 담당.
- DBWn : 더티 버퍼 캐시(변경 내용이 있는 캐시 데이터)의 내용을 디스크의 데이터 파일에 기록
- LGWR : 트랜잭션 로그를 디스크에 기록
- RECO : Distributed database 에서 사용.
- ARCn : redo log file을 Copy
오라클 논리적 구성요소
1. blocks :
- 데이터 저장의 최소 논리적 단위
- 최소 IO 단위
- 운영체제 블록 크기의 배수로 해야 불필요 I/O 방지
- SELECT 조회시 일반적으로 한 번에 여러 블록을 가져오게 됨.
2. extents :
- 데이터 블록의 집합
- 테이블 스페이스가 꽉 찼을 때 저장영역을 확장하는 단위
3. segments :
- extent들로 이루어 짐.
- 테이블, 인덱스, 파티션 등을 이룸.
4. tablespaces :
- 익스텐트들로 이루어짐.
- 시스템 테이블 스페이스, 사용자 테이블 스페이스로 나뉜다.
정리해보자면 아래의 구조를 가진다고 생각하면 될 것 같다.
block⊂extent⊂segments⊂tablespaces⊂table
오라클 물리적 구성요소
1. 데이터 파일 (.dbf) :
- 실제 물리 저장소에 저장 되는 파일
- 한 세그먼트의 서로 다른 익스텐트들이 각자 다른 데이터 파일에 저장 될 수 있다.
2. 리두 로그 파일 :
- 장애 발생 시 복구용으로 활용
- 데이터베이스 변경사항 트랜잭션을 기록하여 데이터 일관성을 유지
3. 컨트롤 파일 :
- 리두 로그의 위치
- 데이터베이스의 물리적 구조 및 상태정보를 제공
4. 파라메터 파일 :
REFERENCE
[1] https://www.youtube.com/watch?v=f3RJd7nBlts
[2] https://www.youtube.com/watch?v=EVlC_vLPWq8
[3] https://m.blog.naver.com/ijoos/221113449475