◆ 오라클 필수 백그라운드 프로세스
  - DBWn
  - LGWR
  - PMON
  - SMON
  - CKPT


◆ Database Writer(DBWn)
DBWR은 DB캐시의 Dirty Buffer를 데이터파일에 기록해주는 역할을 하는 프로세스이다.
  - 체크포인트 발생시
  - Dirty Buffer가 임계치에 도달했을 때
  - Free Buffer가 없을 경우
  - 타임아웃(3초)이 발생했을 때
  - RAC 핑 요청이 들어왔을 때

◇ RAC핑? 캐시퓨전?


◆ Log Writer(LGWR)
LGWR은 리두로그버퍼의 내용을 리두로그파일에 순차적으로 기록해주는 역할을 하는 프로세스이다.
  - 커밋을 날렸을 때
  - 리두로그버퍼의 1/3이 찼을 때
  - 리두로그버퍼 용량이 1MB 이상 찼을 때(리두로그버퍼 사이즈는 대략 30M에서 많게는 50M정도면 충분함)
  - 매 3초마다
  - DBWR이 쓰기 전

리두로그파일에는 누가 몇월몇일몇시에 어떤 내용을 추가, 삭제, 또는 변경했는지 등에 대한 정보가 들어있는데, 과연 이 로그데이터들이 커밋된 데이터들만 들어가있을까? 아닐 것이다. 리두로그버퍼의 용량이 차서 내려써진 것들도 있을 것이다.
왜 DB캐시에 내용을 쓰기 전에 리두로그파일에 먼저 내용을 기록할까?
DB캐시나 리두로그버퍼의 공통점은 둘 다 메모리라는 것이다. 이 말은 즉 서버가 껐다 켜지면 안의 데이터는 싹 다 날아간다는 것이다. 그래서 리두로그버퍼의 내용은 수시로 파일로 저장해야 하는데 좀 더 확실한 예를 들어보자.
데이터파일에서 DB캐시로 데이터를 끌어올려 수정 후 다시 내려쓰는데 드는 시간이 10초라고 가정하자. 리두로그버퍼에서 변경된 데이터로그정보를 리두로그파일로 내려쓰는데는 2초가 걸린다고 가정하자. 이 상태에서 5초에 DB장애가 발생하여 서버가 꺼졌다고 했을 때 다시 구동시키면 DB캐시에 변경된 정보들은 지워졌을 지라도 2초에 변경정보가 리두로그파일에 기록되었기 때문에 그것을 보고 변경작업을 성공적으로 마무리할 수 있을 것이다.


◆ Process Monitor(PMON)
PMON은 운영 중 정전이 발생하여 사용자와의 접속이 끊긴 서버프로세스가 바보가 되었을 때 그 서버프로세스가 맡았던 트랜잭션에 걸린 락을 풀어주고, 커밋 안했던 것은 모두 롤백시켜주는 역할을 하는 프로세스이다.


◆ System Monitor(SMON)
SMON은 위에서 알아본 PMON까지 죽어버렸을 때의 작업들을 해주는 역할을 하는 프로세스이다. 만약 SMON까지 복구를 못했다면 DBA가 수동으로 복구작업 등을 해줘야 한다...


◆ Check Point(CKPT)
CKPT는 3초마다 체크포인트 신호를 일으키는데, 그때 데이터파일 헤더와 컨트롤파일 헤더에 어디까지 내려썼는지를 기록한다.

'오라클 > Admin' 카테고리의 다른 글

[Admin] Database Starting Up  (0) 2010.08.26
[Admin] Logical Structure  (0) 2010.08.26
[Admin] Dedicated Server와 Shared Server  (0) 2010.08.25
[Admin] Oracle Primary Architecture  (0) 2010.08.25
[Admin] 쿼리 수행 절차 (UPDATE문)  (0) 2010.08.25
Posted by 겨울섬
,