[Oracle] 인스턴스의 백그라운드 프로세스

prana·2024년 10월 10일
0

ORACLE

목록 보기
25/96

DBWR (Database Writer)

  • DBWR 프로세스는 SGA 내에 존재하는 데이터베이스 버퍼 캐시로부터
    데이터베이스 블록을 디스크 상의 데이터파일에 쓴다.

  • 오라클 인스턴스는 DBW0~DBW9까지 최대 10개의 DBWR 프로세스를 가질 수 있고, 이 프로세스들은 여러 개의 데이터파일에 I/O 작업을 수행한다.

  • 대부분의 인스턴스는 하나의 DBWR를 사용한다.

  • 대부분의 인스턴스는 하나의 DBWR를 사용한다.

데이터베이스 버퍼 캐시로부터 데이터베이스 블록을 데이터파일에 쓰는 2가지 경우

1. 오라클이 체크포인트를 수행할 필요가 있는 경우

  • 데이터 파일의 블록을 변경하여 리두 로그와 일치하도록 하기 위해

  • 트랜잭션이 커밋될 때 트랜잭션에 대한 리두를 기록한 다음, 실제 블록을 쓴다.

  • 정기적으로 오라클은 데이터파일의 내용을 커밋된 트랜잭션에 대해 기록된 리두와 일치시키기 위해 체크포인트를 수행한다.

2. 오라클이 사용자가 요청한 블록을 캐시로 읽어들이고자 하는데, 버퍼 캐시 내에 충분한 공간이 없는 경우

  • 데이터파일에 쓰여지는 블록은 가장 이전에 사용된(LRU, Least recently used)블록이다.

    • 이러한 순서로 블록을 쓰는 이유: 버퍼 캐시에서 해당 블록을 사용하지 못해서 생기는 성능상의 영향을 최소화하기 위함

LGWR(Log Writer)

  • SGA 내에 존재하는 로그 버퍼로부터 리두 정보를 디스크 상의 현재 리두로그 파일의 모든 복사본에 쓴다.

  • 트랜잭션이 진행됨에 따라 관련 리두 정보는 SGA 내의 리두 로그 버퍼에 저장된다.

  • 트랜잭션이 커밋될 때, 오라클은 리두 정보를 디스크에 쓰기 위해 LGWR 프로세스를 호출함으로써 리두 정보를 영구적으로 기록한다.

SMON(System Monitor)

  • 오라클의 상태와 안전을 안정적으로 유지한다.

  • 장애 후에 인스턴스가 시작될 때, 장애 복구를 수행한다.

  • 또한 Oracle Parallel Server/Real Application Clusters의 경우와 같이 하나 이상의 인스턴스가 동일한 데이터베이스를 액세스할 경우, 인스턴스 장애가 발생하면 이에 대한 복구를 수행한다.

  • SMON은 사용하지 않는 여러 조각의 공간을 하나로 합침으로써 데이터파일 내의 공간을 정리하고, 행 정렬에 사용된 공간이 더 이상 필요없는 경우에 이를 제거한다.

PMON (Process Monitor)

  • 데이터베이스를 액세스하는 사용자 프로세스를 감시한다.
  • 사용자 프로세스가 비정상적으로 종료한 경우, PMON은 해당 사용자 프로세스가 불필요하게 할당하고 있는 (메모리 등과 같은) 자원과 잠금(lock)을 해제한다.

ARCH(Archiver)

  • 오라클이 리두로그 파일을 채우면, 해당 리두로그 파일을 채우면 해당 리두 로그 파일을 읽고, 사용된 리두 로그 파일의 복사본을 지정된 아카이브 로그 위치(들)에 쓴다.

  • 오라클 8i는 ARCn형태로 표시되며, 최대 ARCH 프로세스를 지원한다.

  • LGWR는 업무량에 따라, 초기화 매개변수 LOG_ARCHIVE_MAX_PROCESS 가 지정한 한도까지 필요에 따라 ARCH 프로세스를 띄운다.

CKPT(Checkpoint)

  • DBWR와 함께 체크포인트를 수행한다.
  • CKPT는 체크포인트가 완료되면, 체크포인트 데이터의 갱신을 위해 제어 파일과 데이터벵이스 파일 헤더를 갱신한다.

RECO(Recover)

  • RECO 프로세스는 자동으로 장애가 발생한 트랜잭션이나, 일시중지된 트랜잭션을 복구한다.

데이터 딕셔너리

  • 오라클 데이터베이스는 메타 데이터, 혹은 데이터 구조를 표현하는 데이터의 집합을 갖고있다.

  • 이러한 메타데이터를 저장하는 테이블과 뷰를 Oracle Data Ditctionary라고 일컫는다.

  • 동적 테이블: V$, GV$ 접두어가 붙은 데이터 딕셔너리 테이블은 오라클 데이터베이스의 현 상태를 반영하기 위해 지속적으로 변경되는 동적 테이블이다.

  • 정적 테이블: DBA_, ALL_, USER_

    • 뷰에 열거된 객체의 범주를 표시하기 위해

구성요소데이터 딕셔너리 테이블과 뷰
데이터베이스V$DATABASE
테이블스페이스DBA_TABLESPACES, DBA_DATA_FILES, DBA_FREE_SPACE
제어 파일V$CONTROLFILE, V$PARAMETER, V$CONTROLFILE_RECORD_SECTION
데이터파일V$DATAFILE, V$DATAFILE_HEADER, V$FILESTAT, DBA_DATA_FILES
세그먼트DBA_SEGMENTS
익스텐트DBA_EXTENTS
리두 스레드, 그룹, 멤버V$THREAD, V$LOG, V$LOGFILE
아카이빙 상태V$DATABASE, V$LOG, V$ARCHIVED_LOG, V$ARCHIVE_DEST
데이터베이스 인스턴스V$INSTANCE, V$PARAMETER, V$SYSTEM_PARAMETER
메모리 구조V$SGA, V$SGASTAT, V$DB_OBJECT_CACHE, V$SQL, V$SQLTEXT, V$SQLAREA
백그라운드 프로세스V$BGPROCESS, V$SESSION

0개의 댓글