# 아키텍처
오라클 서버 구조
Oracle | 인스턴스 구성 | SGA | 메모리 | Database Buffer Cache |
Redo Log Buffer | ||||
Shared Pool | Library Cache | |||
Data Dictionary Cache | ||||
Java Pool / Large Pool / Stream Pool | ||||
백그라운드 프로세스 | PMON, SMON | |||
DBWR, LGWR | ||||
CKPT | ||||
DB 구성 | 데이터파일 / 컨트롤 파일 / 리두 로그 파일 / 아카이브 로그 파일 |
결론적으로 오라클 인스턴스는 프로세스와 SGA로 구성된다.
ORACLE (SGA) | 역할 |
Shared Pool | SQL 및 SQL 실행계획을 공유해서 같은 SQL의 Parsing은 권한 확인만 수행 하도록 만들어서 실행 속도를 높임
|
Redo Log Buffer | 변경사항이 발생하게 되면 Redo log file에 Write 되기 이전에 Memory에 먼저 Write 되는 영역 |
Database Buffer Cache | DML실행 시 결과값을 복사해서 데이터버퍼캐시에 저장 |
Large Pool | 선택적 메모리 공간 / 대용량의 메모리 할당이 필요한 경우 사용 (RMAN 사용경우) |
Java Pool | 선택적 메모리 공간 / Java Object에 대한 메모리 영역 |
Stream Pool | Data 복제 등을 위한 Stream 사용 영역 |
※ ASMM
- SGA구성 요소 중 Shared pool, DB buffer cache, Large pool, Java pool, Streams Pool 메모리 자동 관리
- MMAN 프로세스가 메모리가 필요한 곳에 동적으로 할당
ORACLE PGA (서버 프로세스에게 할당되는 메모리)
- Stack Space : 바인드 변수를 사용하는 경우 변수 값을 저장하는 공간
- Session Info : 사용자 세션 정보 저장
- Cursor State : 커서의 주소를 저장하는 공간
- Work Area : 정렬 작업을 수행하기 위해 사용되는 공간 = Mysql에선 Sort buffer
# 프로세스
오라클 프로세스 구성 요소
- 사용자 프로세스
- DBMS 프로세스 (백그라운드 프로세스, 서버 프로세스)
※ 사용자 프로세스 : 애플리케이션이나 데이터베이스 도구를 실행할 때 생성, 작성된 SQL 문장을 서버 프로세스에 전달
※ 서버 프로세스 : 사용자가 데이터베이스 서버에 접속할 때 생성, 사용자 프로세스에서 받은 SQL문을 문법체크나, 권한 체크 등을 수행 = SQL Server에선 Worker 쓰레드
※ 백그라운드 프로세스 : 인스턴스가 시작될 때 생성
Oracle 서버 프로세스 접속 과정
사용자가 리스너에게 연결 요청을 하면, 리스너가 서버 프로세스를 생성해준다.
서버 프로세스는 자신만의 PGA을 할당받는다.
1) 전용 서버 방식
사용자 프로세스에게 전용서비스를 제공한다.
2) 공유 서버 방식
하나의 서버 프로세스와 여러 사용자 세션을 공유하는 방식
주요 백그라운드 프로세스
ORACLE | 역할 |
PMON (Process Monitor) | 사용자 프로세스에 장애가 발생하면 프로세스의 리소스 복구를 수행 |
SMON (System Monitor) | 인스턴스 시작 시 필요한 경우 고장 복구를 수행, 임시 세그먼트, 익스텐트 정리 수행 |
DBWR (Database Writers) | 버퍼 캐시의 dirty 버퍼를 데이터 파일에 기록 BWnn이라고 하기도 함 다중 프로세스를 쓰기 때문에 DBWn이라고 하기도 함 |
CKPT (CheckPoint) | 체크 포인트가 발생하면 데이터 파일의 헤더를 갱신함으로써 버퍼 캐시와 데이터 파일의 동기화 시점을 관리 |
LGWR (Log Writer) | 로그 버퍼를 관리하여 로그 버퍼를 디스크의 로그 파일에 기록 |
RECO (Recoverer) | 분산 트랜잭션 문제해결 |
ARCH(Archiver) | 꽉찬 Online redo log 파일을 archived redo log 폴더로 백업 (혹은 LOG SWITCH가 발생했을 경우) 다중 프로세스를 쓰기 때문에 ARCn이라고 하기도 함 |
LREG (Listener registration) | 리스너에게 인스턴스, 서비스, 핸들러 정보를 공지 작업 수행 |
MMON (Manageability monitor) |
MMON : AWR(자동으로 DB 통계, 성능자료 수집 기능)에 SGA의 통계수집관리 |
필수 백그라운드 프로세스
- DBWR(Database Writer), LGWR(Log Writer), SMON(System Monitor), PMON(Process Monitor), CKPT(CheckPoint)
버퍼
- 더티 목록(Dirty list) : 더티버퍼를 가짐
- LRU(Least Recently Used) 목록 : 빈 버퍼, 현재 액세스 중인 고정된 버퍼, 더티 목록으로 이동되지 않은 더티 버퍼
※ 더티버퍼 : 수정되었지만 아직 디스크에 기록되지 않은 버퍼
오라클 RAC관련 백그라운드 프로세스
ORACLE | 역할 |
MON | 클러스터내의 인스턴스 장애감지 |
LCKn(Lock) | 오라클 병렬 서버환경에서 테이블 잠금과 관련된 백그라운드 프로세스 |
오라클 유틸리티 관련 백그라운드 프로세스
ORACLE | 역할 |
MMAN (Memory Manager) | 자동으로 SGA 일부 영역 size 조절 |
DMnn / DWnn |
Data pump master / Worker 프로세스 기존 export/import 프로세스 대체 |
# 프로세스 및 스레드 확인 방법
ORACLE
ps -ef | grep ora
'ORACLE' 카테고리의 다른 글
인덱스 튜닝을 위한 개념정리 | 버퍼캐시 매커니즘, Latch, 통계정보, 클러스터링 팩터 (0) | 2025.02.22 |
---|---|
Orange 단축키 정리 (0) | 2023.05.29 |
[ SID / SERVICE_NAME ] [ Session / Connection / Process ] 용어정리 (0) | 2023.04.25 |