티스토리 뷰

- 정의: A process is a mechanism in an operating system that can run a series of steps. 일련의 단계를 실행할 수 있는 운영 체제의 메커니즘. 

 

운영체제에 따라, Windows에서 오라클 백그라운드 프로세스는 프로세스 내의 실행 스레드(thread of execution)입니다. Linux, UNIX에서는 운영 체제 포스세스 또는 운영 체제 프로세스 내의 스레드입니다. 

 

프로세스는 코드 모듈을 실행합니다. 오라클에서 모든 유저는 인스턴스에 액세스 하기 위해 다음 모듈을 실행해야 합니다:

- Application or Oracle Database utility: 

  SQL*Plus 같은 DB Tool

- Oracle database code:

 

대부분의 프로세스는 연결된 trace file에 주기적으로 쓸 수 있습니다.

 

Type of Processes

데이터베이스 인스턴스는 여러 프로세스를 포함하거나 상호 작용합니다. 

1. client process

client process는 애플리케이션 또는 Oracle 도구 코드를 실행하는 프로세스입니다. 사용자가 SQL*Plus와 같은 클라이언트 응용 프로그램을 실행할 때 운영 체제는 응용 프로그램을 실행할 클라이언트 프로세스를 생성합니다.

2. Oracle process

  - background process

백그라운드 프로세스는 데이터베이스 인스턴스로 시작하여 인스턴스 복구 수행, 프로세스 cleaning up, 디스크에 redo buffers 쓰기 등과 같은 유지 관리 작업을 수행합니다.

  - server process

서버 프로세스는 클라이언트 요청에 따라 작업을 수행합니다.
예를 들어 이러한 프로세스는 SQL 쿼리를 parse하고, 그것을 shared pool에 배치하는 작업, 각 쿼리에 대한 query plan을 생성 및 실행, 데이터베이스 버퍼 캐시나 디스크에서 버퍼를 읽어오는 작업을 수행합니다.

  참고: 서버 프로세스 및 이러한 프로세스에 할당된 프로세스 메모리는 인스턴스에서 실행됩니다. 인스턴스는 서버 프로세스가 종료(terminate)될 때 계속 작동합니다.

  - slave process

 

프로세스 구조는 운영 체제와 Oracle Database 옵션의 선택에 따라 다릅니다. 예를 들어 dedicated server 또는 shared server에 연결된 사용자에 대한 코드를 구성할 수 있습니다. shared server 아키텍처에서 각 서버 프로세스는 여러 클라이언트 프로세스에 서비스를 제공할 수 있습니다.

dedicated server connection에서 SGA와 background process

Oracle Database 12c 이전 릴리스에서 Oracle 프로세스는 UNIX 및 Linux 시스템에서 스레드로 실행되지 않았습니다. Oracle Database 12c부터 multithreaded Oracle Database model을 사용하면 Oracle 프로세스가 별도의 주소 공간에서 운영 체제 스레드로 실행할 수 있습니다. Oracle Database 12c가 설치되면 데이터베이스는 프로세스 모드에서 실행되고 스레드 모드에서 데이터베이스를 실행하려면 THREADED_EXECUTION 초기화 매개변수를 TRUE로 설정해야 합니다. 스레드 모드에서 UNIX 및 Linux의 일부 백그라운드 프로세스는 프로세스로 실행되는 반면(각 프로세스에는 하나의 스레드가 포함됨) 나머지 Oracle 프로세스는 프로세스 내에서 스레드로 실행됩니다.

 

데이터베이스 연결은 클라이언트 프로세스와 데이터베이스 인스턴스 간의 물리적 통신 경로입니다. 일반적으로 연결은 클라이언트 프로세스와 서버 프로세스 또는 디스패처 간에 발생합니다. 

 

데이터베이스 세션은 데이터베이스에 대한 현재 사용자 로그인 상태를 나타내는 데이터베이스 인스턴스 메모리의 논리적 엔티티입니다. 예를 들어, 사용자가 데이터베이스에서 암호로 인증되면 이 사용자에 대한 세션이 설정됩니다. 세션은 사용자가 데이터베이스에 의해 인증된 시간부터 사용자가 데이터베이스 응용 프로그램의 연결을 끊거나 종료할 때까지 지속됩니다.

Note: If Oracle Net connection pooling is configured, then it is possible for a connection to drop but leave the sessions intact. 연결은 끊겨도 세션은 유지되는 경우도 존재. 

 

SQL 문 실행 통계의 자동 추적 보고서를 생성하면 그림 15-3의 시나리오가 다시 생성됩니다.
DISCONNECT 명령은 연결을 종료하는 것이 아니라 세션을 종료합니다.

hr(사용자)가 데이터베이스에 대해 single connection, 두 개의 세션이 있는 경우

오라클은 인스턴스에 연결된 클라이언트 프로세스의 요청을 처리하기 위해 서버 프로세스를 생성합니다. 클라이언트 프로세스는 항상 별도의 서버 프로세스를 통해 데이터베이스와 통신합니다.

서버 프로세스가 하는 일:

- SQL 구문 파싱 및 run
- Execute PL/SQL code
- 데이터 파일에서 데이터베이스 버퍼 캐시로 데이터 블록 읽기 (이후 DBW 백그라운드 프로세스가 수정된 블록을 디스크에 다시 쓰는 작업 수행)
- 결과 반환 (Return results in such a way that the application can process the information)

 

서버 연결 종류: 총 2가지. Dedicated server, Shared server.

- Dedicated Server: Dedicated (전용) 서버 연결에서 클라이언트 연결은 단 하나의 서버 프로세스와 연결됩니다.
Linux에서 인스턴스에 연결된 20개의 클라이언트 프로세스는 20개의 서버 프로세스에 의해 서비스됩니다. 각 클라이언트 프로세스는 서버 프로세스와 직접 통신합니다. 이 서버 프로세스는 세션 기간 동안 클라이언트 프로세스 전용입니다. 서버 프로세스는 프로세스별 정보와 UGA를 PGA에 저장합니다.

 

오라클이 서버 프로세스를 생성하는 방식: 대표적으로 Bequeath 방식 사용. Client application이 다이렉트로 서버 프로세스를 생성 (spawn). 그 외에 client application이 listener를 통해 database에 연결한다. 

Background process

백그라운드 프로세스는 인스턴스의 일부이며 데이터베이스를 운영하고 여러 사용자의 성능을 최대화하는 데 필요한 maintenance 작업을 수행합니다. 각 백그라운드 프로세스는 고유한 작업을 수행하지만 다른 프로세스와 함께 작동합니다. 오라클은 인스턴스를 시작할 때 자동으로 백그라운드 프로세스를 생성합니다. 인스턴스를 시작하면 필수 백그라운드 프로세스가 자동으로 시작됩니다. 필요에 따라 나중에 선택적 백그라운드 프로세스를 시작할 수 있습니다.

Mandatory background processes: 

- PMON

- PMAN

- LREG

- SMON

- DBWn

- CKPT

- MMON

- MMNL

- RECO

- LGWR

 

Optional background processes: 

- ARCn

- CJQ0

- RVWR

- SMCO

 

Slave processes: 

- Dnnn

- Snnn

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2025/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
글 보관함