Oracle Process

2024. 9. 19. 21:59·DB

DB Process & Thread

Oracle Process

  • Process는 OS에 따라 달라진다
  • 오라클 프로세스는 오라클 데이터베이스 코드를 실행하는 실행 단위입니다. Process Architecture (oracle.com)

Multiprocess and MultiThread

데이터베이스와 애플리케이션의 작업을 여러 프로세스로 나누면 여러 사용자와 애플리케이션이 동시에 인스턴스에 연결할 수 있으며 시스템 성능도 향상됩니다.

쓰레드 모드로 사용하면 일부 프로세스들을 OS 프로세스로 실행 가능하다.

Oracle Process ≠ OS Process

종류

  • Client Process : Application 또는 Oracle Tool 을 실행시킨다.
    • SQLPlus을 실행시킬 시 OS는 Client Process를 실행시킨다.
  • Background Process : 각 Client Process에 대해 실행 중인 여러 Oracle 프로그램에서 처리할 수 있는 기능을 통합하는 프로세스, 백그라운드 프로세스는 비동기적으로 I/O를 수행하고, 다른 Oracle 프로세스를 모니터링한다.
  • Server Process : 사용자 요청 또는 Client Process 요청을 처리한다.

OracleStructure

Client Process

  • ProC Program, SQL Plus 실행 시, OS는 Client Process를 생성한다. 데이터베이스와 통신하는 데 필요한 API를 제공하는 Oracle 데이터베이스 라이브러리가 연결되어 있습니다.
  • 다른 프로세스들은 SGA를 직접 read, write 할 수 있지만, Client Process는 하지 못한다. 클라이언트 프로세스는 데이터베이스 호스트가 아닌 다른 호스트에서 실행할 수 있지만 Oracle 프로세스는 그렇지 않습니다.

Connections and Sessions

  • Connection은 Client Process와 데이터베이스 인스턴스 간의 물리적 통신 경로
  • 연결 중에는, IPC 또는 Network Software를 사용할 수 있다.
  • Session은 사용자가 데이터베이스에 의해 인증된 시점부터 사용자가 데이터베이스 애플리케이션 연결을 끊거나 종료할 때까지 지속됩니다.

Server Process

  • 인스턴스에 연결된 클라이언트 프로세스의 요청을 처리하기 위해 서버 프로세스를 생성
  • Client Process는 Server Process를 통해 데이터베이스와 통신한다.
  • Task
    • 쿼리 계획 생성 및 실행을 포함하여 애플리케이션을 통해 발행된 SQL 문을 구문 분석하고 실행합니다.
    • PL/SQL 코드 실행
    • 데이터 파일에서 데이터베이스 버퍼 캐시로 데이터 블록 읽기
    • Application이 정보를 처리할 수 있는 방식으로 결과를 반환

Shared Server Processes

  • 여러 Client Process가 하나의 Dispatcher Process에 연결할 수 있다.
  • 연결된 Client의 요청을 수신하여 Pool의 대기열에 넣는다. 사용 가능한 Shared Server가 큐에서 요청을 가져와 처리한다. 그 후 응답 대기열에 결과를 넣는다. Shared Server Process는 큐를 모니터링하고 결과를 클라이언트에게 전송

Background Process

  • 백그라운드 프로세스는 데이터베이스 운영 및 여러 사용자의 성능을 극대화하는 데 필요한 유지 관리 작업을 수행합니다.
  • 각 백그라운드 프로세스에는 별도의 작업이 있지만 다른 프로세스와 함께 작동합니다.
  • 인스턴스 실행 시, 백그라운드 프로세스를 생성한다.

필수 Background Process

PMON

  • Process 모니터링 및 Clean up, Buffer Cache , Client Process가 사용하는 자원 관리한다
  • 종료된 프로세스가 보유한 리소스를 다른 프로세스에서 획득할 수 있어야한다.
    • 다른 백그라운드 프로세스의 종료를 감지
    Cleanup Main Process (CLMN)
    • 종료된 프로세스, 종료된 세션, 트랜잭션 등을 정리
    Cleanup Helper Processes (CLnn)
    • 정리 작업 위임받아 실행한다.
  • Process Monitor Process (PMON)

Process Manager (PMAN)

  • Shared Server, Pooled Server, Job Queue Process등을 관리한다.

System Monitor Process (SMON)

  • 필요한 경우 인스턴스 시작 시 인스턴스 복구를 수행합니다.
  • 파일 읽기 또는 테이블 스페이스 오프라인 오류로 인해 인스턴스 복구 중에 건너뛴 종료된 트랜잭션을 복구
  • 사용하지 않는 임시 세그먼트를 정리합니다.

Database Writer Process (DBW)

  • 데이터베이스 버퍼의 내용을 데이터 파일에 쓴다.
  • 버퍼 캐시에 있는 수정된 버퍼를 디스크에 쓴다.
  • 대부분 하나의 DBW를 사용하지만, 쓰기 성능을 향상하기 위해 추가 프로세스를 구성할 수 있다. 단, 단일 프로세스 시스템에선 유효하지 않다.
  • Dirty Buffer를 Disk에 적는 조건
    • 서버 프로세스가 버퍼를 스캔하는데, 깨끗한 버퍼를 찾지 못한 경우 DBW에 쓰기 신호를 보낸다.

Log Writer Process (LGWR)

  • Online Redo Buffer를 관리한다.
    • Buffer의 일부분을 Online Redo Log로 write
  • 데이터베이스 버퍼 수정, 디스크 분산 write등 작업을 분리하여 성능 향상
  • 모든 Redo entry들을 버퍼에 write 하는 경우
    • commit, transaction
    • log switch 발생 시
    • Redo log Buffer가 3분의 1이 찼을경우

Checkpoint Process (CKPT)

  • control file, data file header를 체크포인트 정보로 업데이트하고, DBW에 디스크에 write
  • 복구를 시작할 수 있는 Checkpoint 위치, online redo log 위치 포함

DB Process & Thread

Oracle Process

  • Process는 OS에 따라 달라진다
  • 오라클 프로세스는 오라클 데이터베이스 코드를 실행하는 실행 단위입니다. Process Architecture (oracle.com)

Multiprocess and MultiThread

데이터베이스와 애플리케이션의 작업을 여러 프로세스로 나누면 여러 사용자와 애플리케이션이 동시에 인스턴스에 연결할 수 있으며 시스템 성능도 향상됩니다.

쓰레드 모드로 사용하면 일부 프로세스들을 OS 프로세스로 실행 가능하다.

Oracle Process ≠ OS Process

종류

  • Client Process : Application 또는 Oracle Tool 을 실행시킨다.
    • SQLPlus을 실행시킬 시 OS는 Client Process를 실행시킨다.
  • Background Process : 각 Client Process에 대해 실행 중인 여러 Oracle 프로그램에서 처리할 수 있는 기능을 통합하는 프로세스, 백그라운드 프로세스는 비동기적으로 I/O를 수행하고, 다른 Oracle 프로세스를 모니터링한다.
  • Server Process : 사용자 요청 또는 Client Process 요청을 처리한다.

OracleStructure

Client Process

  • ProC Program, SQL Plus 실행 시, OS는 Client Process를 생성한다. 데이터베이스와 통신하는 데 필요한 API를 제공하는 Oracle 데이터베이스 라이브러리가 연결되어 있습니다.
  • 다른 프로세스들은 SGA를 직접 read, write 할 수 있지만, Client Process는 하지 못한다. 클라이언트 프로세스는 데이터베이스 호스트가 아닌 다른 호스트에서 실행할 수 있지만 Oracle 프로세스는 그렇지 않습니다.

Connections and Sessions

  • Connection은 Client Process와 데이터베이스 인스턴스 간의 물리적 통신 경로
  • 연결 중에는, IPC 또는 Network Software를 사용할 수 있다.
  • Session은 사용자가 데이터베이스에 의해 인증된 시점부터 사용자가 데이터베이스 애플리케이션 연결을 끊거나 종료할 때까지 지속됩니다.

Server Process

  • 인스턴스에 연결된 클라이언트 프로세스의 요청을 처리하기 위해 서버 프로세스를 생성
  • Client Process는 Server Process를 통해 데이터베이스와 통신한다.
  • Task
    • 쿼리 계획 생성 및 실행을 포함하여 애플리케이션을 통해 발행된 SQL 문을 구문 분석하고 실행합니다.
    • PL/SQL 코드 실행
    • 데이터 파일에서 데이터베이스 버퍼 캐시로 데이터 블록 읽기
    • Application이 정보를 처리할 수 있는 방식으로 결과를 반환

Shared Server Processes

  • 여러 Client Process가 하나의 Dispatcher Process에 연결할 수 있다.
  • 연결된 Client의 요청을 수신하여 Pool의 대기열에 넣는다. 사용 가능한 Shared Server가 큐에서 요청을 가져와 처리한다. 그 후 응답 대기열에 결과를 넣는다. Shared Server Process는 큐를 모니터링하고 결과를 클라이언트에게 전송

Background Process

  • 백그라운드 프로세스는 데이터베이스 운영 및 여러 사용자의 성능을 극대화하는 데 필요한 유지 관리 작업을 수행합니다.
  • 각 백그라운드 프로세스에는 별도의 작업이 있지만 다른 프로세스와 함께 작동합니다.
  • 인스턴스 실행 시, 백그라운드 프로세스를 생성한다.

필수 Background Process

PMON

  • Process 모니터링 및 Clean up, Buffer Cache , Client Process가 사용하는 자원 관리한다
  • 종료된 프로세스가 보유한 리소스를 다른 프로세스에서 획득할 수 있어야한다.
    • 다른 백그라운드 프로세스의 종료를 감지
    Cleanup Main Process (CLMN)
    • 종료된 프로세스, 종료된 세션, 트랜잭션 등을 정리
    Cleanup Helper Processes (CLnn)
    • 정리 작업 위임받아 실행한다.
  • Process Monitor Process (PMON)

Process Manager (PMAN)

  • Shared Server, Pooled Server, Job Queue Process등을 관리한다.

System Monitor Process (SMON)

  • 필요한 경우 인스턴스 시작 시 인스턴스 복구를 수행합니다.
  • 파일 읽기 또는 테이블 스페이스 오프라인 오류로 인해 인스턴스 복구 중에 건너뛴 종료된 트랜잭션을 복구
  • 사용하지 않는 임시 세그먼트를 정리합니다.

Database Writer Process (DBW)

  • 데이터베이스 버퍼의 내용을 데이터 파일에 쓴다.
  • 버퍼 캐시에 있는 수정된 버퍼를 디스크에 쓴다.
  • 대부분 하나의 DBW를 사용하지만, 쓰기 성능을 향상하기 위해 추가 프로세스를 구성할 수 있다. 단, 단일 프로세스 시스템에선 유효하지 않다.
  • Dirty Buffer를 Disk에 적는 조건
    • 서버 프로세스가 버퍼를 스캔하는데, 깨끗한 버퍼를 찾지 못한 경우 DBW에 쓰기 신호를 보낸다.

Log Writer Process (LGWR)

  • Online Redo Buffer를 관리한다.
    • Buffer의 일부분을 Online Redo Log로 write
  • 데이터베이스 버퍼 수정, 디스크 분산 write등 작업을 분리하여 성능 향상
  • 모든 Redo entry들을 버퍼에 write 하는 경우
    • commit, transaction
    • log switch 발생 시
    • Redo log Buffer가 3분의 1이 찼을경우

Checkpoint Process (CKPT)

  • control file, data file header를 체크포인트 정보로 업데이트하고, DBW에 디스크에 write
  • 복구를 시작할 수 있는 Checkpoint 위치, online redo log 위치 포함

'DB' 카테고리의 다른 글

Deadlock in Oracle with Insert query  (0) 2024.11.10
Connection Pool  (0) 2024.09.19
CAP란?  (0) 2023.08.12
'DB' 카테고리의 다른 글
  • Deadlock in Oracle with Insert query
  • Connection Pool
  • CAP란?
Viper1
Viper1
  • Viper1
    생각의 흐름
    Viper1
  • 전체
    오늘
    어제
    • 분류 전체보기 (70)
      • 문제풀이 (40)
        • 백준 (25)
        • 프로그래머스 (15)
      • 딥러닝 공부 (6)
      • 스프링 (9)
      • 자바 (9)
      • DevOps (2)
      • DB (4)
      • 회고 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Viper1
Oracle Process
상단으로

티스토리툴바