Oracle Admin 강좌 (Oracle9i)
오라클 백그라운드 프로세스 14 13 99,999+

by 구루비 SMON PMON DBWR LGWR CKPT ARCH RECO LCKN PNNN SNPN SNNN DNNN [2002.01.23]


  Oracle 10g 강좌에서 좀 더 자세한 내용을 확인 할 수 있습니다.

  오라클 백그라운드 프로세스는 5개의 필수 프로세스와 그 밖에 프로세스로 구성되어 있습니다.

오라클 필수 프로세스

  SMON(System Monitor), PMON(Process Monitor), DBWn(Database Writer), LGWR(Log Writer), CKPT(Check Point)

  이들 프로세스는 오라클 데이터베이스가 시작되기 위해서는 꼭 필요 하며, 데이터베이스가 종료되면 위의 프로세스들도 모두 종료 됩니다.

SMON(System Monitor)

  시스템 모니터는 오라클 인스턴스를 관리 하는 프로세스 입니다.

  오라클 인스턴스 fail시 인스턴스를 복구하는 역할을 합니다.

  데이터 파일의 빈 공간을 연결하여 하나의 큰 빈공간으로 만듭니다.

  더 이상 사용하지 않는 임시 블록 세그먼트들을 재사용 할수 있게 합니다.

PMON(Process Monitor)

  오라클에 서버에서 사용되는 각 프로세스들을 감시하는 프로세스 입니다.

  비정상 종료된 데이터베이스의 접속을 정리 합니다.

  정상적으로 작동하지 않는 프로세스들을 감시하여 종료 시키며, 비정상적으로 종료된 프로세스들에게 할당된 SGA 리소스를 재사용 가능하게 합니다.

  커밋되지 않은 트랜잭션을 롤백시킵니다.

DBWn(Database Writer)

  버퍼 캐시에 있는 수정된(Dirty) 버퍼의 내용을 데이터 파일에 기록 합니다.

  DBWn는 데이터베이스 버퍼캐쉬로부터 데이터 파일로 더티 버퍼(dirty buffer)를 옮겨 적습니다. 이렇게 함으로써 데이터베이스 버퍼 캐쉬 내에 충분한 수의 프리 버퍼(free buffer)가 사용 가능하게 됩니다.

  최근에 사용되지 않은 데이타 블럭부터 디스크에 쓰여지는 LRU 알고리즘을 사용합니다.

DBWn이 발생하는 이벤트
  • - 더티 버퍼 수가 임계값에 도달 했을 때
  • - 프로세스가 지정된 갯 수의 블록을 스캔 하고도 Free Buffer를 하나도 발견하지 못했을 때
  • - 시간이 초과 했을 때 → 3초 동안 작업이 중단 될 때(A time-out occurs)
  • - Checkpoint 가 발생했을 때
  • - RAC ping이 요청 되었을 때
  • - Tablespace가 offline이나, read only로 변경 되었을 때
  • - Table을 DROP하거나 TRUNCATE 했을 때
  • - Tablespace BEGIN BACKUP 명령을 실행 했을 때

LGWR(Log Writer)

  데이터베이스 버퍼캐쉬에서 발생한 모든 변화를 기록하는 역할을 합니다.

  SGA의 리두로그 버퍼에 생겨나며, 트랜잭션이 완료되었을 때 LGWR가 리두로그 버퍼의 내용을 온라인 리두로그 파일에 기록 합니다.

LGWR프로세스에 의해 리두 로그 버퍼가 디스크에 저장되는 시점
  • - 데이터베이스 커밋(commit)이 수행되었을 때.
  • - 리두 로그 버퍼가 1/3이상 찼을 때
  • - 체크 포인트에 의한 DBWn 프로세스의 작업이 요구될 때
  • - 3초마다.
  • - LOG_CHECKPOINT_TIMEOUT파라미터 설정 시간에 의해 TIME-OUT이 발생할 때.

CKPT(Check Point)

  모든 변경된 데이터베이스 버퍼를 디스크 내의 데이터 파일로 저장하는 것을 보장 합니다.

  변화된 데이터 블록의 수, 또는 일정 시간을 두고 DBWn 프로세스가 데이터베이스 버퍼(더티 버퍼)를 데이터 파일로 저장하도록 명령하는 일을 합니다.

  체크포인트가 발생하면 데이터 파일과 컨트롤 파일의 헤더를 갱신 합니다

※ 체크 포인트와 관련된 오라클 파라미터
  • - LOG_CHECKPOINT_TIMEOUT : 체크포인트가 발생할 시간 간격 설정(단위 :초)
  • - LOC_CHECKPOINT_INTERVAL : 체크포인트가 발생할 리두 로그 파일의 블록수 지정

※ 체크포인트 발생시점
  • - log switch change
  • - log_checkpoint_interval
  • - log_checkpoint_timeout
  • - shutdown
  • - tablespace offline

그 밖의 프로세스

ARCn(Archiver) - 아카이버

  ARCn는 Online RedoLog File이 꽉차거나 DBA가 ALTER SYSTEM SWITCH LOGFILE의 명령어로 강제적으로 LOG SWITCH가 발생할 때 리두 로그 파일들을 지정된 저장장치로 저장하는 역할을 합니다.(LOG SWITCH : 리두 로그 그룹 간의 이동)

  아카이브 저장소는 일반적으로 다른 디스크 저장공간 이거나 테이프 장치 입니다.

  ARCn는 데이타베이스의 리두 로그가 ARCHIVELOG 모드일 때 만 수행됩니다

RECO(Recovery) - 복구자

  데이터베이스 복구시에 시작되는 프로세스 입니다.

LCKn(Lock) - 잠금

  오라클 병렬 서버에만 적용되며, 오라클 병렬 서버에서 다수의 오라클 인스턴스 사이에서 Locking을 수행 합니다.

Pnnn(Parallel Query) - 병렬 질의

  오라클 병렬서버에서, 병렬 질의를 제공 합니다.

Snnn(Shared Server) - 공유 서버

  Multi Threaded Server구성에서 여러 클라이언트 요청에 응답 합니다

SNPn(Shapshot Refresh)

  자동으로 Shapshot Table을 갱신 할 때 사용

Dnnn(Dispatcher)

  다수의 사용자 프로세스가 서버프로세스를 공유하도록 하여 Multi Thread 구성을 지원합니다

QMNn: Advanced Queuing

LMON: RAC DLM Monitor.Global Locks

LMDn: RAC DLM Monitor.Remote Locks

참고링크

- 강좌 URL : http://www.gurubee.net/lecture/1080

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

by 김정식 [2004.01.02 11:01:30]
◈ 체크포인트 참고

- 더 빈번한 체크포인트는 성능상의 비용은 더 들지만 인스턴스 장애로부터 복구하는데 필요한 시간을 줄입니다.

- 체크포인트 동안, DBWR은 데이터베이스 버퍼 캐시에 있는 모든 dirty buffer를 디스크로 기록하고 LGWR은 모든 로그 버퍼 엔트리를 디스크로 기록합니다. 이것은 이전 체크포인트 이후로 수정된 모든 데이터 블록이 실제로 디스크로 기록되게 하고, 갱신하는 트랜잭션의 커밋 상태에 따라 모든 엔트리가 롤백되거나 커밋될 수 있게 합니다.

by 김정식 [2004.01.02 11:02:59]
◈ 체크포인트 발생 시점

- 로그 스위치가 발생할 때마다(무시할 수 없음).
- 최종 데이터베이스 체크포인트 이후 명시된 초(second)만큼 경과 시(LOG_CHECKPOINT_TIMEOUT을 이용하여 설정합니다).
- 최종 체크포인트 이후 몇 개의 OS 블록의 수가 리두 로그 파일로 기록되어졌을 때 (LOG_CHECKPOINT_INTERVAL을 이용하여 설정합니다).
- 인스턴스가 중지되지(aborted) 않는다면 인스턴스의 종료(shutdown)시에.
- DBA에 의해 강제 실행될 때(ALTER SYSTEM CHECKPOINT 명령).
- 테이블스페이스가 오프라인될 때나 온라인 백업이 시작될 때.

by ㅈㅈ [2004.11.04 19:28:06]
오라클은 따분해서 어떻게 공부들 하시나요?


by ora92 [2005.04.09 19:32:21]
따분하지 않은 공부를 하세요.

by qaz [2005.04.25 14:58:04]
먹고 살라면 않을 수 있나?

by minux [2005.08.16 11:21:07]
따분해서 못하겠으면 다른걸 찾아보는게 좋을수도....
어차피 한번 살고 가는 인생 따분한거 하면서 살순 없죠~~ ^^

by process [2005.10.09 22:05:32]
DBWR process 발생하는 이벤트 중에 "RAC ping이 요청 되었을 때"란 말이 있는데, 이 부분이 무슨뜻인지 모르겠어요.

by 김승훈 [2007.07.27 03:48:44]
commit되지 않은 트랜잭션을 롤백시키는건 smon이 하지 않나요?

by 최씨 [2008.01.09 19:56:15]
오라클로 밥 먹고 살기 힘드네

by 김양하 [2008.01.11 01:32:50]
RAC ping이 요청되었다는 말이.. RAC 환경에서 db에 연결된 user가 점유한 session을 버렸을때 라는 말인것 같은데 맞는가요? ^^

by 천상낙원 [2008.02.18 15:36:20]
전 지금 9i 어드민 교육받는데 뭔 말인지.. ㅠㅠ 이해해안됨

by 오라클 [2008.04.14 15:54:33]
2004년이나 2008년이나 사용자 반응은 비슷한 오라클

by 돌이맹이 [2012.03.13 15:02:01]

이부분은 어렵네
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입