• Oracle은 각 인스턴스에 대해 일련의 백그라운드 프로세스를 생성합니다. 이 프로세스들은 여러 Oracle 프로그램이 실행해야 하는 기능을 통합합니다. 기능을 통합하지 않는 다면 각 사용자 프로세스마다 여러 개의 Oracle 프로그램을 실행해야 합니다. 보다 나은 성능과 신뢰성을 위해 백그라운드 프로세스는 비동기적으로 I/O를 수행하고 다른 Oracle 프로세스를 모니터하여 향상된 병렬 기법을 제공합니다.
  • SGA와 Oracle 백그라운드 프로세스는 Oracle 인스턴스를 구성합니다. Oracle 인스턴스는 다음과 같은 프로세스들을 포함합니다.
    • Database Writer Process (DBWn)
    • Log Writer Process (LGWR)
    • Checkpoint Process (CKPT)
    • System Monitor Process (SMON)
    • Process Monitor Process (PMON)
    • Recoverer Process (RECO)
    • Job Queue Processes
    • Archiver Processes (ARCn)
    • Queue Monitor Processes (QMNn)

       
       

    데이터베이스 기록자(DBWn)

  • DBWR 는 데이터베이스 버퍼 캐쉬로 부터 데이터 파일로 수정된 블럭를 씁니다.
  • Oracle의 로깅방법 때문에 트랜잭션이 완료되었을 때 블럭들을 디스크에 쓸 필요가 없도록 DBWR의 수행 방법은 최적화 되어 있습니다.
  • 보통 데이터베이스 버퍼의 빈공간이 거의 없는 상태에서 SGA 로 데이터를 읽어 들일 필요가 있을 때 메모리 공간을 확보하기 위해서 수정된 블럭에 대한 디스크 쓰기가 행해집니다. 최근에 사용되지 않은 데이터 블럭부터 디스크에 쓰여지는 LRU 알고리즘을 사용합니다.
  • 대부분의 시스템에서는 하나의 DBWR만으로 충분하지만, 변경작업이 활발한 경우 이에 대한 성능을 극대화 하기위해 여러개의 DBWR을 지정할 수 있습니다. 단, 하나의 프로세서가 장착된 시스템에서는 이런 방법이 유용하지 않습니다.

     
     

    로그 기록자(LGWR)

  • LGWR 은 리두 로그 항목들을 디스크에 씁니다.
  • 리두 로그 데이터는 SGA 의 리두 로그 버퍼에 생겨나며, 트랜잭션이 완료되었을 때 LGWR가 리두 로그 버퍼의 내용을 온라인 리두 로그 파일에 씁니다.

     
     

    체크포인트(CKPT)

  • 일정 간격으로 SGA 의 모든 수정된 데이터베이스 버퍼는 DBWR 에 의해 데이터 파일에 쓰여지는데 이것을 Checkpoint라 합니다.
  • 이 프로세스는 checkpoint 실시 시점에서 DBWR 에 신호를 보내고 데이터베이스의 모든 데이터 파일과 콘트롤 파일을 수정하여 최근의 checkpoint를 기록합니다.

     
     

    시스템 모니터(SMON)

  • SMON 은 인스턴스 시작시와 다중 인스턴스 시스템에서 장애가 발생한 인스턴스 복구시에 실행됩니다.

    또, SMON 은 더 이상 사용되지 않는 세그먼트를 정리하고 파일 읽기 및 오프라인 에러에 의해 생기는 인스턴스의 복구시에 완료되지 못하고 사장된 트랜잭션 들을 복구합니다.

     
     

    프로세스 모니터(PMON)

  • PMON 은 사용자 프로세스가 실패 했을 때 프로세스 복구를 수행합니다.
  • PMON 은 실패한 사용자 프로세스가 점유하고 있던 자원을 반납하고 캐쉬를 정리합니다.

     
     

    복구자(RECO)

  • RECO는 분산 데이터베이스에서 네트워크 또는 시스템 장애로 미결정 (Pending)된 분산 트랜잭션을 처리하기 위해 사용됩니다.
  • 로컬 RECO 는 정해진 시간마다 리모트 데이터베이스에 연결을 시도해 보고, 자동으로 로컬내의 미결정된 트랜잭션을 커밋 하거나 롤백 시킵니다.

     
     

    작업 큐(CJQn)

  • 작업큐 프로세스는 일반적으로 batch 작업에서 사용됩니다. 이 프로세스는 사용자 작업(job)을 수행합니다.
  • 사용자 작업의 시작시점과 수행간격 정보에 따라서 필요시 기동되게 됩니다.
  • 새로운 프로세스에 의해 사용된 리소스는 작업이 idle 상태로 전이될 때 함께 반납됩니다.
  • 초기화 파라메터 JOB_QUEUE_PROCESSES는 이 프로세스의 최대값을 지정합니다. 이 값이 ‘0’일때, 이 프로세스들을 관장하는 상위 프로세스는 기동되지 않습니다.

     
     

    아카이브(ARCn)

  • ARCH 는 온라인 리두 로그 파일이 꽉 찼을때 리두 로그 파일이 스위치 되면서 사용한 리두 로그 파일을 아카이브 저장소로 복사합니다.
  • 아카이브 저장소는 일반적으로 다른 디스크 저장공간 이거나 테이프 장치 입니다.
  • ARCH 는 데이터베이스의 리두 로그가 ARCHIVELOG 모드일 때 만 수행됩니다.

     
     

    대기열 모니터(QMNn)

  • 대기열 모니터는 Oracle Advanced Queuing(Oracle AQ)에 대한 메시지 대기열을 모니터하는 선택적 백그라운드 프로세스입니다. 최대 10개 의 대기열 모니터 프로세스를 구성할 수 있습니다.

     
     

By haisins

오라클 DBA 박용석 입니다. haisins@gmail.com 으로 문의 주세요.

One thought on “Background Process”

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다