[Oracle] Background Process

prana·2024년 12월 8일
0

ORACLE

목록 보기
45/96

그림을 보고 설명할 수 있을 정도로... 글로 풀면서 정리를 시작해볼 예정.. ✍️

필수 프로세스

DBWR (Database Writer)

  • Database Buffer Cache에서 변경 완료 후, Dirty Block을 데이터 파일로 저장하는 역할
  • SQL> show parameter processes;
    db_writer_process 개수 확인

🤔 DBWR가 DB Buffer Cache의 Dirty Buffer의 내용을 파일에 내려쓰는 경우

  1. Checkpoint 신호가 발생했을 때
  2. Dirty Buffer가 임계값을 지날 때
  3. Time out이 발생했을 때
  4. RAC Ping이 발생했을 때
  • 노드 간 통신 점검(서로의 상태를 주기적으로 확인)
    • 클러스터 간 네트워크(LAN)과 디스크 기반 네트워크(Shared Disk)를 통해 이루어짐
  • Cache Fusion은 RAC에서 각 노드의 버퍼 캐시를 통합하여 공유 데이터베이스를 운영할 수 있게 하는 메커니즘
  1. Tablespace가 Read only 상태로 변경될 때
  2. Tablespace가 offline될 때
  3. Tablespace가 begin backup 상태가 될 때
  4. Drop table이나 , Truncate Table 될 때
  5. Direct Path Read/Write 가 진행될 때
  6. 일부 Parallel Query 작업이 진행될 때

LGWR (Log Writer)

  • 데이터가 변경되면, Server Process가 변경 내역(Change Vector)를 Redo Log Buffer에 기록
  • LGWR는 Redo Log Buffer에 있는 내용을 디스크의 Redo Log File로 저장한다.

🎨 LGWR가 수행될 때

  1. Commit이 발생했을 때
  2. 1/3이 찼을 때
  3. 변경량이 1M가 되었을 때
  4. 3초 마다
  5. DBWR가 내려쓰기 전에

※ Commit을 수행하면 디스크로 데이터를 저장하는 게 아니라, Redo Log를 저장하는 것이다.

1) 사용자 프로세스가 데이터를 변경하면, Redo Log Buffer에 변경 사항이 저장된다. 2) LGWR 프로세스가 이를 Online Redo Log 파일로 기록한다. 3) ARCHn 프로세스가 필요 시 Archived Redo Log로 복사한다.

PMON (Process Monitor)

  • 모든 서버 프로세스들을 감시하고, 비정상적으로 종료된 프로세스가 있다면 관련 복구작업 등을 하는 역할
  • 어떤 서버 프로세스가 작업 도중 비정상적으로 종료되었을 때, PMON이 해당 서버 프로세스가 사용하고 있던 Transaction Table의 내용을 다시 reset하여 해당 서버 프로세스가 설정해 놓은 lock이 있다면 해제
  • 비정상 종료된 서버 프로세스의 Transaction ID를 시스템에서 제거해주는 일을 해준다.

    + 인스턴스가 시작될 때, 해당 인스턴스의 정보를 Listener에 등록하고, 관리하는 역할도 한다.

SMON (System Monitor)

a. 인스턴스가 비정상 종료되었을 경우(Instance Crash), 인스턴스를 시작할 때 Clean up하는 역할을 담당한다.(Instance Recovery)라고 한다.

b. 어떤 사정이 (File 에러, Tablespace가 Offline 상태여서) 있어서 Instance Recovery 과정에서 누락된 Transaction을 Recovery하는 역할도 담당한다.

c. 비정상 종료된 Transaction이 사용 중이던 Temporary Segment를 Clean Up 하는 역할도 SMON이 하게 된다.

d. Dictionary Managed Tablespace에서 free extents들을 모아주는 역할도 한다.

👉 Instance Recovery 과정

가. A를 입력한다.
나. B를 입력한다.
다. commit;
라. C를 입력한다.
마. 정전이 되어 Database가 비정상 종료되었다.

위 상황에서 startup을 수행하면, 다음과 같은 Instance Recovery를 수행한다.
1. Parameter File을 읽어 nomount 단계에서 instance를 생성한다.
2. Mount 단계에서 Control File 내용을 확인하여, Instance Crash 상황임을 확인한다.
3. Redo log file에서 위 가, 나, 다, 라 단계의 작업을 다시 수행한다. (Roll Forward)
4. Database 를 open한다.
5. Commit이 안 된 4번 작업을 취소한다. (Roll backward)

  • Instance Recovery 할 때는 Online Redo Log File만 읽고 진행된다.
  • 만약 복구해야 할 내용이 Archived Redo log file에 있다면, Instance Recovery로는 복구가 안되며, DBA가 수동으로 Media Recovery를 수행해야 한다.

Online Redo Log File, Archived Redo Log File

  • Onlie Redo Log File
    : Instance Recovery에서만 사용된다.
    SELECT group#, member FROM v$logfile;
    • 위치: $ORACLE_BASE/oradata


  • Archived Redo Log File
    : Online Redo Log가 가득 차고, 로그 스위치가 발생했을 때 Archived Redo Log로 백업된다.
    SHOW PARAMETER log_archive_dest;
    • 위치: $ORACLE_BASE/fast_recovery_area

CKPT (Checkpoint Process)

  • CKPT Process는 DBWR에게 Checkpoint 신호를 전달해주며,
    Control File과 Data File Header에 해당 Checkpoint 정보를 기록하는 역할을 한다.
  • Checkpoint 정보에는 Checkpoint 위치와 SCN, 해당 내용을 담고 있는 Redo log 내용의 위치값 등을 담고 있다.

MMON(Manageability Monitor Processes)

  • AWR(Automatic Workload Repository)와 관련된 다양한 작업을 수행하는 프로세스

MMNL

  • Active Session History(ASH) 정보를 디스크의 파일로 기록하는 역할 수행

RECO(Recover Process)

  • 분산 데이터베이스 환경에서 Transaction 처리 도중 장애가 발생할 경우, 해당 Transaction을 자동으로 복구해 주는 역할을 수행

선택 백그라운드 프로세스

ARCn(Archiver Processes)

  • Archive Log Mode로 데이터베이스를 운영할 경우, Online Redo Log File을 Archiving해주는 역할.
  • Archive Log Mode가 아닌 경우엔 작동하지 않음

CJQ0 & Jnnn (Job Queue Processes)

  • 오라클에서 제공하는 Job 기능 수행하는 프로세스
  • Oracle Job: 어떤 작업을 미리 정해진 시간에 정해진 옵션으로 예약해서 실행하게 해주는 아주 편리한 기능

FBDA(FlashBack Data Archiver Process)

  • 11g 버전부터 새로 등장한 FBDA 기능을 수행해주는 프로세스
  • Flashback 기능 중에, Undo Data를 사용하는 기능이 있는데, 이 기능들은 Undo Data를 다른 프로세스가 덮어 써버릴 경우, Flashback을 할 수 없게 되는 단점이 있었음
    • FBDA 기능을 사용할 경우, Undo Data를 다른 사용자가 덮어쓰기 전에, Archive를 해서 보관해주는 기능이 도입,
    • 이 때 Undo Data를 다른 곳으로 복사해주는 역할을 담당하는 프로세스가 FBDA이다.

CTWR (Change Tracking Writer Process)

  • RMAN Incremental 백업에서 변경된 블록만 백업하도록 돕는다.
    1) 데이터 블록이 변경될 때 CTWR가 Change Tracking File에 변경된 블록의 정보를 기록
    2) RMAN Incremental 백업 시 CTWR가 기록한 정보를 사용해 변경된 블록만 백업

LRED (Listener Registration Process)

  • 데이터베이스 인스턴스 정보를 리스너(Listener)에 등록한다.
    • 리스너가 클라이언트의 데이터베이스 연결 요청을 처리할 수 있도록, 데이터베이스를 등록한다.
      1) 데이터베이스 인스턴스가 시작되면 LREG가 리스너에 등록
      2) 리스너는 클라이언트 요청을 받아 서버 프로세스로 전달한다.

TMON (Transport Monitor Process)

  • Transportable Tablespace와 관련된 모니터링을 수행
  • 데이터베이스 간 테이블스페이스 이동을 지원한다.
  • 테이블스페이스가 전송되면, TMON이 프로세스를 모니터링하고 작업을 관리한다.

SMCO (Space Management Coordinator)

  • 테이블스페이스 자동 세그먼트 공간 관리(ASSM) 작업을 수행한다.
  • 세그먼트 공간을 자동으로 관리하고, 최적화한다.
  • 사용 가능한 공간이 부족하면 SMCO가 자동으로 공간을 할당한다.
  • 확장 작업이 필요한 테이블 또는 인덱스의 공간을 최적화한다.

MARK (Change Data Capture)

  • CDC 기능을 담당
  • 테이블에 변경된 데이터를 캡쳐해 타 시스템으로 전송할 때 사용된다.
  • 주로 데이터 복제 및 ETL 작업에서 활용된다.

0개의 댓글