백그라운드 프로세스

  • 데이터베이스를 지속적으로 수행하는 데 필요한 일상적인 유지 업무 담당
  • V$ 뷰를 보면 모든 오라클 백그라운드 프로세스를 알 수 있고, 시스템에서 현재 어느 프로세스가 사용중 인지를 볼 수 있다.

sys@BWD> column name format a4
sys@BWD> select paddr, name, description
  2    from v$bgprocess
  3   order by name -- paddr desc
  4  /

PADDR            NAME DESCRIPTION

---------------- ---- ----------------------------------------------------------------
00               ARB0 ASM Rebalance 0
00               ARB1 ASM Rebalance 1
00               ARB2 ASM Rebalance 2
00               ARB3 ASM Rebalance 3
00               ARB4 ASM Rebalance 4
00               ARB5 ASM Rebalance 5
.
.
.
00               NSV9 Data Guard Broker NetSlave Process 9
070000001F6749C8 PMON process cleanup                              --00과 다른 PADDR을 가진 로우는 시스템에서 실행 중인 프로세스(쓰레드)다.
070000001F6751A8 PSP0 process spawner 0
070000001F67E748 QMNC AQ Coordinator
00               RBAL ASM Rebalance master
070000001F6788C8 RECO distributed recovery
00               RSM0 Data Guard Broker Resource Guard Process 0
00               RSM1 Data Guard Broker Resource Guard Process 1
00               RVWR Recovery Writer
070000001F6780E8 SMON System Monitor Process

158 rows selected.

1. 특화된 백그라운드 프로세스

  • 특화된 프로세스의 개수, 이름, 타입은 릴리즈에 따라 다를 수 있다.
    !background process.jpg!
    p240.그림5-4
  • 11gR2에서 데이터베이스는 최소한의 init.ora파라미터를 가지고 시작한다.

*.compatible='11.2.0.0.0'
*.control_file='/home/......'
*.db_block_size=8192
*.db_name='orcl'
*.memory_target=314572800
*.undo_tablespace='UNDOTBS1'

  • 12개의 백그라운드 프로세스가 기동된다(10.2.0.4)

sys@BWD> select paddr, name, description
  2  from v$bgprocess
  3  where paddr <> '00'
  4  order by paddr desc
  5  /

PADDR            NAME  DESCRIPTION
---------------- ----- ----------------------------------------------------------------
070000001F67CFA8 QMNC  AQ Coordinator
070000001F67C7C8 ARC0  Archival Process 0
070000001F679888 MMNL  Manageability Monitor Process 2
070000001F6790A8 MMON  Manageability Monitor Process
070000001F6788C8 RECO  distributed recovery
070000001F6780E8 SMON  System Monitor Process
070000001F677908 CKPT  checkpoint
070000001F677128 LGWR  Redo etc.
070000001F676948 DBW0  db writer process 1
070000001F675988 MMAN  Memory Manager
070000001F6751A8 PSP0  process spawner 0
070000001F6749C8 PMON  process cleanup

12 rows selected.   -- 11gR2에서는 17개  p.241

PMON

: 각 각의 오라클 프로세스들을 모니터링

  • dedicated server process가 fail로 죽으면, commited되지 않은 작업을 rollback, lock 해제, 자원 반환
  • shared server or dispatcher가 기능 정지하면, 실패한 프로세스 정리 후 동일 프로세스 재시작
  • 자신을 리스너에 등록(인스턴스의 서비스이름, 부하 메트릭같은 관련 파리미터를 리스너에 전달)

SMON

: 시스템 모니터링

  • 템포러리 공간 정리
  • DMT(dictionary-managed 테이블스페이스)의 빈익스텐트와 인접한 익스텐트를 가져와서 한 개의 큰 빈 익스텐트로 합침
  • 사용할 수 없는 상태의 데이터 파일에 발생한 COMMITTED된 트랜잭션 정보를 복구
  • 인스턴스 복구(싱글, RAC )
  • OBJ$ 테이블의 더 이상 존재하지 않는 객체 정보 삭제
  • UNDO 세그먼트 줄임
  • UNDO 세그먼트 오프라인 변경
  • DBA_TAB_MONITORING 뷰에 나타나는 모니터 통계를 삭제 등등

RECO

: 분산 데이터베이스 복구

  • 2단계 commit을 하는 N-1개의 분산환경에서 네트웍 등의 에러로 트랜잭션이 비정상종료되면 복구

CKPT

: 체크포인트 프로세스

  • 체크포인트 정보를 control file, datafile header 에 기록
  • data file header의 체크포인트 정보는 원래 lgwr의 일이였음
  • ckpt는 옵션 프로세스였으나, 8.0버젼부터 필수 백그라운드 프로세스가 됨.

DBWn

: 데이터베이스 블록 Writer

  • 실제 checkpoint를 행함(동기화)
  • dirty buffer를 data file에 내려 써 줌으로써 버퍼캐시 공간을 확보함
  • checkpoint position을 전진(checkpoint position: 인스턴스 복구 시작점)
  • 10g에서는 최대 20개 , 11g에서는 최대 36개(DBW0~DBW9, DBWa~DBWz)

LGWR

: 로그 Writer

  • 매 3초마다 / commit / redo log buffer가 1/3 채워졌거나 1Mb redo entry가 발생시 작업실행

ARCn

: 아카이브 프로세스

  • log switch 발생시( alter system switch logfile; )
  • 10gR2, 11gR2 모두 최대 30개 생성 가능

DIAG/DIAn

: 진단 프로세스

  • 원래 10g에서는 RAC환경에서만 사용,
  • 11gR1 부터 ADR 프로세스와 함께 싱글DB에서도 인스턴스 전체 상태 모니터링
  • DIAG: 인스턴스 장애 처리에 필요한 정보 갭쳐
  • DIA1~9: 행이 걸리거나 deadlock을 감지하고 문제 해결

FBDA

: 플래시백 데이터 아카이브 프로세스

  • 일명 "토탈리콜" 기능을 실현하는 프로세스
  • 토탈리콜: 11g에 새롭게 추가된 기능
  • 작업 실행시에만 나타타 남 <default 5min>>

http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28424/adfns_flashback.htm#BJFFDCEH

DBRM

: 데이터베이스 리소스관리자 프로세스

  • 자원 계획이 실행되어 있을 경우에 활성화 됨

GEN0

: 일반적인 태스크 실행 프로세스

  • ASM 프로세스가 GEN0 프로세스에게 특정 파일 블로킹 요청
  • 슬레이브 프로세스와 본질적으로 유사

2. 나머지 특화된 프로세스

  • ASM에서만
ASMB자동 스토리지 관리 백그라운드 프로세스ASM 인스턴스에 연결하여 시간에 따라 변경되는 통계를 제공
ASM 인스턴스에 자신의 존재를 "heartbeat" 신호
RBAL재균형 프로세스ASM 디스크 그룹에 DISK를 추가 하거나 제거할 때 Rebalance 작업 처리
  • RAC에서만
LMON락 모니터 프로세스클러스터 내의 인스턴스의 장애 감지
클러스터 내의 인스턴스 추가,제거할 때 락과 여타 자원 재구성
LMSn락 관리자 서버 프로세스서로 관련된 SGA 블록 버퍼 캐시의 일관성을 유지(최대35개)
LMD0락 관리자 데몬 프로세스LMSn 프로세스가 다루는 큐에 리소스에 대한 요청을 보내는 중재자 역할
글로벌 데드락 감지, 해결 / 글로벌 환경에서 락 타임아웃을 감시
LCK0락 프로세스LMD0와 유사한 기능 처리
블록 버퍼를 제외한 모든 글로벌 자원에 대한 요청 처리
LHMB락 관리자 하트비트 프로세스LMON,LMD0, LMSn 모니터링, heartbeat
  • 대부분 환경에서 볼 수 있는 공통 백그라운드 프로세스
PSP0프로세스 생성기새로운 프로세스 or 쓰레드를 생성, 대부분 인스턴스 구동시 수행
VKTM가상 시간 유지기 프로세스지속시간과 시간 간격을 측정하는 데 사용되는 정밀도가
높은 타이머 와 사람이 읽을 수 있는 wall clock time 을 제공
SMCO공간 관리 조정자 프로세스Wnnn 슬래이브 프로세스를 통해 작업 처리

3.유틸리티 백그라운드 프로세스

  • 필요에 따라 사용자가 선택할 수 있는 프로세스
CJQ0와 Jnnn 프로세스Job QueueDBMS_JOB 패키지를 통한 job queue 사용
j000~J999 프로세스 생성 가능( job_queue_processes )
Jnnn 프로세스는 차례대로 한 번에 한 번씩 작업처리 후 사라짐
QMNC와 QnnnAdvanced Queueaq_tm_processes 파라미터로 qnnn 프로세스 개수 설정(10gR2: 최대 10개, 11gR2: 최대 41개)
jnnn프로세스와 달리 작업에 상관없이 계속 상주
EMNC이벤트 모니터 프로세스이벤트 관리와 공지 활동으로 조정
Streams Event Notifications, Continuous Query Notifications, and Fast Application Notifications 등
MMAN메모리 관리자자동으로 SGA의 일부 영역의 SIZE를 조절
shared/java/streams/large pool, default buffer cache
MMON, Mnnn과 MMNL관리 모니터MMON : AWR에 SGA의 통계 수집 관리 및 ADDM 분석 실행 작업 조정자
Mnnn : 실제 AWR에 SGA의 통계 수집 관리 및 ADDM 분석 실행
MMNL : 활성 세션 이력 정보 수집 및 변화율 계산
CTWR변경 추적 프로세스RMAN의 증분 백업의 성능을 개선하기 위해 변경 추적 파일 유지
target DB는 OMF, FRA 설정되어 있어야함
ALTER DATABASE ENABLE / DISABLE BLOCK CHANGE TRACKING
RVWR복구 WriterFlashback Database 기능을 활성화하면 flashback buffer 원본 정보를
FRA에 있는 Flashback logs 파일에 기록
archive mode, FRA 설정되어 있어야 함
ALTER DATABASE FLASHBACK ON; (mount 단계에서)
DMnn/DWnn데이터 펌프 마스터/작업자 프로세스기존 export/import 프로세스를 완벽하게 대체
DMnn : 클라이언트 프로세스로부터 데이터를 수집하고 DWnn을 조정
DWnn : 실제 메타데이터와 데이터를처리

http://download.oracle.com/docs/cd/E11882_01/server.112/e24448/bgprocesses.htm#REFRN104