본문 바로가기

ORACLE

ORACLE 아키텍처 및 프로세스

반응형

  # 아키텍처  

출처 : https://dataonair.or.kr/db-tech-reference/d-guide/sql/?mod=document&uid=357

오라클 서버 구조

 

 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은 권한 확인만 수행 하도록 만들어서 실행 속도를 높임
  • Data Disctionary Cache : 데이터베이스 테이블과 뷰에 대한 정보, 구조, 사용자등에 대한 정보가 저장
  • Library Cache :  SQL 문장을 Server Process가 여러 단계를 거쳐 작업할 때 사용하는 작업 공간
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

 

반응형