DoubleDBDeep

[ORACLE] 3. Oracle Process 본문

ORACLE/Architecture

[ORACLE] 3. Oracle Process

DBCAMI 2023. 3. 6. 17:24

< 오라클 프로세스 구조 >

User Process

오라클 데이터베이스에 연결하는 응용 프로그램(Orange, Toad, Sqldeveloper 등)이나 SQL*Plus 등의 도구

Database Process 

 - Server Process : 오라클 인스턴스에 연결되며 User Process의 명령을 수행

 - Background Process : 오라클 인스턴스가 시작될 때 시작되며 데이터베이스 시작, 디스크에 블록 쓰기, 온라인 리두 로그 유지, 중단된 프로세스 정리, AWR 유지 등 

Daemon / 응용 프로그램 Process 

네트워킹 리스너 및 Grid Infrastructure Damon (ohas, ocssd, diskmon, orarootagent, oraagent, cssdagent)

 

1. 서버 프로세스

Client Session에서 데이터베이스로 보내는 SQL문을 받아 대신 일을 처리하는 프로세스

- 응용 프로그램을 통해 발행된 SQL문 구문분석 및 실행

- 디스크의 데이터 파일에서 필요한 데이터 블록을 SGA의 공유 데이터베이스 버퍼로 읽기 (메모리에 없는 경우)

- 응용 프로그램이 정보를 처리할 수 있는 방식으로 결과 반환

 

Dedicated server <-> Shared server 정리 !!
UGA가 PGA에 있냐 - Dedicataed Server / SGA(shared pool)에 있냐 - Shared Server
UGA가 뭔데 
-> 사용자 session이랑 관련된 memory로 Sort Area (SQL 작업공간), 접속 세션 정보, 
   커서 상태 (SQL Parsing 정보 주소값 저장 - 실행 SQL문의 위치) 등의 정보를 가지는 공간

그럼 Shared Server의 PGA는 Stack Space(SQL문의 Bind 변수를 담는 공간)만 남음 

ㅇㅋ?
ㅇㅋ

~~ 요약 ~~
시스템 과부하나 특정 기능을 위해 Shared server를 반 드 시 사용해야 하는 필요가 없는 한 
dedicated server를 사용하게 될 것임. (설정도 단순하고 튜닝하기도 쉬움)
Shared server를 이용해 구축한다면.. 많은 테스트가 필요할 것!

2. 백그라운드 프로세스

오라클 인스턴스 = SGA + Background Processes 

백그라운드 프로세스는 데이터베이스를 지속적으로 수행하는데 필요한 유지 업무를 담당한다.

  • 특화된 백그라운드 프로세스 
  • 그 외 작업을 수행하는 프로세스 (예 : 유틸리티 프로세스)

>> 조회 

(가능한) 모든 오라클 백그라운드 프로세스 

select *
from v$bgprocess
;

특화된 백그라운드 프로세스 (시스템에서 실행 중인 프로세스)

select paddr, name, description
from v$bgprocess
where paddr <> '00'
;

리눅스에서 조회

$ ps -aef | grep ora_...._$ORACLE_SID

--> 프로세스 명명 규칙 : ora_프로세스 실제 이름 4자리 문자 _$ORACLE_SID 

 

특화된 백그라운드 프로세스

1. PMON (Process Monitor) : 프로세스 모니터

1) 비정상적으로 커넥션이 종료된 후 정리하는 일을 담당. (자원 해제)

  -> 커밋되지 않은 작업에 대해 롤백 수행, 락 해제, 실패한 프로세스에 할당된 SGA 자원 해제

2) 다른 오라클 백그라운드 프로세스 모니터링 및 필요 시 해당 프로세스 재시작 or 종료

3) 오라클 TNS 리스너에 등록 

  -> 인스턴스 구동 시 등록된 포트번호로 접속 시도

 

2. SMON (System Monitoe) : 시스템 모니터

1) 시스템 레벨의 모든 작업을 수행

2) 데이터베이스를 위한 garbage collector 역할 수행

  -> temporary 공간 정리 : 예) 인덱스 생성 과정에 만들어진 extent는 TEMPORARY로 표시되는데, CREATE INDEX 세션이 갑자기 중단된 경우 SMON이 해당 익스텐트를 정리하는 일을 한다. 다른 작업이 생성한 임시 익스텐트 또한 처리

  -> 빈 공간 합침 : 테이블 스페이스에서 빈 익스텐트와 서로 인접한 익스텐트를 가져와 하나의 큰 빈 익스텐트로 함침

  -> 가용하지 않은 파일을 대상으로 활동 중인 트랜잭션 복구 : 예) 데이터베이스 구동 시 데이터파일을 사용할 수 없어서 실패된 트랜잭션을 복구함

  -> RAC에서 실패한 노드의 인스턴스 복구 : 실패한 인스턴스의 리두 로그 파일을 열어 모든 데이터에 대한 복구 작업 수행

  -> OBJ$ 정리 : OBJ$ 테이블에서 더이상 필요하지 않은 로우를 제거

  -> 언두 세그먼트 줄이기 : 자동으로 언두 세그먼트의 크기를 최적으로 줄이는 작업 수행

  -> 언두 세그먼트 오프라인 

 

3. RECO (Distributed Database Recovery) : 분산 데이터베이스 복구

1) 분산 데이터베이스 구성에 사용 : 분산 트랜잭션과 관련된 실패를 자동으로 해결하는 데이터베이스에 사용

2) In-Doubt 분산 트랜잭션과 관련된 다른 데이터베이스에 자동 연결 및 모든 트랜잭션 해결, 행 제거

 

4. CKPT (Checkpoint) : 체크포인트 프로세스

* 체크포인트 : 데이터베이스의 redo thread에 SCN을 정의하는 데이터구조로 컨트롤파일 및 데이터파일 헤더에 기록되는 Recovery 필수 요소

체크포인트 발생 시 모든 데이터파일의 헤더를 갱신하여 체크포인트의 세부 사항 기록

--> 체크포인트 작업은 DBWn이 직접 수행하고 CKPT는 파일 헤더를 수정하여 도와줄 뿐.

 

5.  DBWn (Database Block Writer) : 데이터베이스 블록 기록자

메모리(SGA)에 있는 Database Buffer Cache의 내용을 Datafile에 기록한다.

Buffer는 수정되면 Dirty로 표시되는데, 이러한 dirty block을 디스크로 내려쓰거나, 체크포인트를 전진시킨다.

* 만약 블록을 디스크에 기록하는 속도가 Buffer를 비우는 속도를 따라가지 못하면 Free Buffer Waits 대기 횟수와 Write Complete Waits 대기 시간이 증가함

 

6. LGWR (log Writer) : 로그 기록자

메모리(SGA)에 있는 Redo Log Buffer의 내용을 Redo Log File(disk)에 기록한다.

이 3중 1개라도 만족 시 기록됨

1) 매 3초마다

2) 트랜잭션이 커밋될 때

3) Redo Log Buffer가 1/3 채워졌거나 Buffer에 저장된 데이터가 1MB 이상일 때

4) DBWn이 디스크에 내려쓰기 전 (필요 시)

 

7. ARCn (archive) : 아카이브 프로세스

LGWR이 온라인 리두 로그 파일을 채웠을 때, 그 파일을 다른 위치로 복제하는 일을 담당 --> 미디어 복구 시 사용

즉, Redo Log File은 인스턴스가 비정상 종료됐을 때 데이터 파일을 복구하기 위해 사용될 수 있고,

Archived Redo Log File은 하드디스크에 장애가 발생했을 때 데이터 파일을 복구하기 위해 사용될 수 있다.

// 아카이브로그 모드 사용 확인
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Mar 7 01:47:28 2023
Version 19.17.0.0.0

Copyright (c) 1982, 2022, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.17.0.0.0

SQL> archive log list  
Database log mode	       Archive Mode
Automatic archival	       Enabled
Archive destination	       USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     56
Next log sequence to archive   56
Current log sequence	       58

 

등등 외에도

RAC 환경에서만 사용되는 백그라운드 프로세스들 및 다양한 백그라운드 프로세스들이 존재함

 

 

728x90

'ORACLE > Architecture' 카테고리의 다른 글

[ORACLE] Cursor  (0) 2024.04.17
[ORACLE] SQL Parsing  (0) 2024.04.17
[ORACLE] 2. Oracle Memory 구조  (0) 2023.03.06
[ORACLE] 1. Oracle Server Architecture  (0) 2023.03.03