Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

DBDBDEEP

Oracle 프로세스 아키텍처 본문

Oracle ADMIN

Oracle 프로세스 아키텍처

Kihwane 2022. 1. 11. 00:02

오라클 데이터베이스 시스템의 프로세스는 세가지 주요그룹으로 나눌 수 있다. 

1. User Process

- 오라클 데이터베이스에 연결하는 응용프로그램 또는 도구

- SQL*Plus, SQL Developer

 

2. 데이터베이스 프로세스

- 서버 프로세스 > Oracle Instance에 연결되며 유저가 세션을 설정하면서 시작된다.

- 백그라운드 프로세스 > Oracle Instance가 시작될때 시작된다.

 

3. Daemon / 응용프로그램 프로세스

- 네트워킹 리스너

- 그리드 Infrastructure Daemon

 

프로세스 구조

유저 프로세스

오라클 데이터베이스는 Server Process를 생성하여 Instance에 연결된 User Process의 요청을 처리한다.

User Process는 Oracle DB와 동일한 시스템 또는 원격 클라이언트에 존재하며 Network를 이용하여 Oracle DB에 연결이 가능하다. UserProcess는 전용환경에서 리스너 프로세스와 통신한다.

 

서버 프로세스

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

- 디스크의 데이터 파일에서 필요한 데이터 블록을 SGA의 공유 데이터베이스 버퍼로 읽기

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

 

백그라운드 프로세스 

1) Process Monitor Process (PMON)

2) Listener Registration Process (LREG)

3) System Monitor Process (SMON)

4) Database Writer Process(DBWn)

5) Log Wirter Process (LGWR)

 

필수로 떠 있어야 하는 오라클 BackGround Process. 다음중 하나라도 Process가 죽게되면 Oracle Server는 다운된다.


6) Checkpoint Process(CKPT)

7) Manageability Monitor Process (MMON and MMNL) 

8) Recoverer Process (RECO)

 선택적 Background Process. 

 

 DBWR(데이터베이스 기록자 프로세스)

• 설명

- 프로세스는 1CPU당 최대 8개의 DBWn을 띄우게 된다. 기본적으로 DBW0 하나가 작동을 하지만 I/O가 많이 추가로 더    필요한 경우 DBW1 ~ DBW9를 동시에 사용

- DBWR은 Data-Buffer-Cache에서 변경된 내용 Dirty Block 을 Datafile로 내리는 역할을 한다.

 

 

• DBWR이 버퍼를 기록하는 경우

1) CheckPoint 발생 시

2) Dirty Buffer임계값을 지났을때

- 버퍼캐시의 사용가능한 임계값에 도달하면 DBWR은 LRU List의 자주 사용되지 않는 버퍼를 DataFile에 기록한다.

  (그래야만 Data-Buffer-Cache에 새로운 값을 넣을 수 있음)

3) Timeout 발생시 

4) RAC Ping이 발생했을때

5) TablespaceRead only 상태로 변경될때

6) Tablespace offline될떼

7) Tablespace begin backup 상태가 될때

8) Drop table이나 Truncate table 될때

9) Direct Path Read/Write가 진행될 때

 

• DBWR 특징

항목 내용
지연 쓰기 데이터 버퍼 캐시로 복사된 데이터 블록이 변경될 경우 해당 데이터블록을 변경 즉시 데이터 파일에 기록하지 않고 추후 여러개의 변경작업을 모아서 한번에 디스크에 저장한다.
빈번한 디스크 I/O를 방지하기 위함
빠른 커밋 지연 쓰기 방식으로 변경된 데이터를 디스크로 기록할 경우 장애가 발생했을 때 메모리에만 저장되어 있던 변경 정보가 유실되어 데이터 정합성에 문제가 발생.
빠른 커밋 : 데이터 변경을 완료하고 커밋을 수행하면 변경된 내용에 대한 로그정보를 즉시 디스크로 기록하는 방법

 

DB 버퍼캐시의 버퍼는 수정되면 Dirty로 표시되고 SCN 순서로 보관되는 상위 체크포인트 큐에 추가된다.

SCN 순서는 이들 변경된 버퍼에 대해 리두로그에 기록되는 리두 순서와 일치하게 된다.

버퍼캐시의 사용가능한 임계값이 도달하면 DBWn은 LRU List의 자주 사용되지 않는 버퍼를 기록한다.

DBwn은 체크포인트가 계속 전진할 수 있게 체크포인트 큐 아래쪽에 버퍼를 기록한다.

 

LGWR(데이터베이스 기록자 프로세스)

리두로그 버퍼를 디스크의 리두 로그 파일에 기록한다.

 

LGWR 기록시점

 1. User Process가 트랜잭션을 커밋할 때 

 2. 온라인 리두 로그 스위치가 발생했을 때

 3. 리두로그 버퍼가 1/3 찼거나 1MB의 버퍼된 데이터를 포함할 때

 4. DBWR 프로세스가 디스크에 수정된 버퍼를 쓰기 전

 - DBWR은 일부 리두 레코드가 기록되지 않았음을 확인하면 LGWR에 리두 레코드를 디스크에 기록하라는 신호를 보냄

   LGWR이 기록해야 DBWR이 데이터 버퍼를 기록할 수 있음.

 5. 마지막 쓰기 작업 후 3초가 지났을 때

 

Log의 특징 

Sequencial

> 로그의 순서는 작업이 일어난 순서대로 순차적으로 기록된다.

> 사용자의 작업과 log의 순서가 일치해야 한다.

 

ps -ef 명령어를 이용하여 LGWR 프로세스를 확인하였다.

lgwr : log writer

lg00 / lg01 : log writer를 도우는 프로세스. LGnn 프로세스 라고불린다.

 

CKPT (체크포인트 프로세스)

 

체크포인트

- 데이터베이스의 리두 Thread에 SCN(시스템 변경 번호)을 정의하는 데이터 구조.

- Control File 및 각 데이터 파일 헤더에 기록되는 Recovery의 필수 요소

CKPT는 Control File 및 데이터 파일의 헤더에 체크포인트 작성.

 

- 체크포인트가 발생하면 Oracle DB는 모든 데이터 파일의 헤더(체크포인트가 적히는 위치)를 갱신

 

체크포인트를 기록하는 작업은 CKPT 프로세스에 의해 수행된다.

파일 헤더에 기록된 SCN은 해당 SCN이 DBWN에의해 디스크에 기록되기 전에 데이터베이스 블록에 대한 모든 변경이  이루어졌음을 의미한다.

 

SMON (시스템 모니터 프로세스)

1. SMON은 필요한 경우 Instance가 시작될 때 Recovery를 수행한다.

2. 사용하지 않는 임시 세그먼트를 정리한다.

 

SMON이 사용되는 상황

1) DBWR의 지연쓰기

- 위의 DBWR의 설명에서 DBWR은 지연쓰기를 한다고 하였다.  DBWR이 데이터 버퍼의 데이터를 데이터 파일로 내리지 않았을 때 DB가 다운되면 데이터 버퍼캐시의 내용은 사라지게 된다.

이 때 SMON이 Redo Log buffer 에서 LGWR 이 로그파일로 내렸던 로그를 다시 따라가면서 복구를 한다.

커밋되지 않은 것은 Rollback 해주는 것이 원칙이다.

 

2) PGA의 Sql Sort (Sql Work Area) 공간이 적을 때는 TEMP 임시공간을 사용한다.

   SMON은 TEMP 공간을 정리해 준다 (임시 세그먼트 정리)

 

PMON (프로세스 모니터 프로세스)

- User Process가 실패할 경우 프로세스 Recovery를 수행한다. 

  •  데이터베이스 버퍼 캐시를 정리함

  •  User Process에서 사용하는 리소스를 해제한다.

  ex) 활성 트랜잭션 상태를 재설정, Lock을 해제, PGA회수

- Idle 세션 타임아웃에 대한 세션 모니터

 

RECO (복구자 프로세스)

- 분산 데이터베이스 구성에 사용

- In-Doubt 분산 트랜잭션과 관련된 다른 데이터베이스에 자동으로 연결

- 모든 In-Doubt 트랜잭션을 자동으로 해결

- In-Doubt 트랜잭션에 해당하는 모든 행 제거

 

LREG (복구자 프로세스)

Oracle Net 리스너를 사용하여 데이터베이스 Instance 및 디스패처 프로세스에 대한 정보를 등록한다.(DB에 대한 정보를 리스너에게 60초에 한번 씩 알려주는 것이다)