11. 오라클 백그라운드 프로세스

Kyu·2023년 4월 18일
0

백그라운드 프로세스 왜 배워야하는가?

  • 장애가 발생하면 백그라운드 프로세스의 동작과 관련된 지식이 필요할 때가 많다.

백그라운드 프로세스와 서버 프로세스의 관계

  • 서로 바쁘면 잠들고 하던거 끝나고 요청할때 깨운다.
  • CPU가 1,2개인데 프로세스가 수십에서 수백까지 활성화되어 있는 경우가 많다
    • 왜 이게 가능? 대부분 슬립상태라서 CPU 자원을 소모하지 않기 때문이다.
  • 백그라운드 프로세스 중 몇가지는 정기적으로 어떤 처리를 위해 정기적으로 wake-up 한다.

DBWR의 동작과 역할

복습해봅시다.

  • DBWR: 변경된 데이터를 캐시에서 디스크로 기록하는 역할
  • LGWR: 백그라운드 프로세스가 커밋한 시점의 REDO 로그를 디스크에 기록하는 역할.
    • 혹시 DBWR 이 기록못하는 경우가 있더라도 LGWR 가 백업해주는 느낌.
  • ARCH: 아카이브 REDO 로그 파일에 기록.

어떤 식으로 I/O를 하는 것인가?

  • 동기 비동기 방식의 I/O 를 지원하는것 같다.

  • 비동기 I/O 라고 할지라도 부하가 너무 커지면 SQL 을 처리하기위해 데이터 읽어오는 속도가 느려질 수 있어 디스크에 너무 많은 부하를 주어서는 안된다

    • DBWR 는 부하가 많을 때 긴 시간에 걸쳐 가능한한 부하를 균일하게 줄 수있도록한다.

      • 응답 속도 시간을 위함이다.

      왜?

DBWR의 수는 왜 장비마다 다른 것일까?

  • 비동기 IO 를 사용할 수 없는 환경(?)에서 효과적
  • 성능 향상

어떤 때 DBWR에 장애가 발생하는가?

  • IO의 hang이나 지연
  • DBWR이 캐시->디스크 기록 지연
    • 서버 프로스세가 사용할 수 있는 빈 버퍼를 확보하지 못함 -> free buffer waits 대기 이벤트
      • 또는 write complete waits, buffer busy waits

LGWR의 동작과 역할

언제 I/O 하는가?

  • 일반적으로는 rdbms ipc message 상태 (슬립상태)
  • 커밋할때 REDO 로그 기록
  • 3초에 한번 rdbms ipc message 에서 깨어나 로그 버퍼의 데이터를 기록
    • 기록할떄 log file prallel write 상태로 대기 (병렬로 기록)
  • 서버 프로세스가 LGWR 기록하는 것을 기다릴때 log file sync 대기 이벤트

어떤때 LGWR에 장애가 발생?

  • 성능부족, REDO 로그 생성량 많을때, 아카이브 받는 디스크가 가득찼을때, 로그버퍼 용량이 작을때
    • 가장흔한건 디스크가 가득찼을때

다른 백그라운드 프로세스들

SMON

  • System MONitor
  • 공간 전문 청소 업체
  • 테이블스페이스 안의 빈공간을 합친다거나, 처리도중 종료된 트랜잭션을 롤백한다거나, 임시 세그먼트를 청소
  • 평소엔 smon timer 대기이벤트
  • 디비 비정상 종료되었을때 재기동하면 인스턴스 복구라는 처리를 함
    • REDO 로그파일을 사용한다는데 LGWR 랑 다른점은?

PMON

  • Process MONitor
  • 메모리와 프로세스 전문 청소 업체
  • 서버 프로세스 비정상 종료했을때 메모리나 프로세스 정리
  • 정리딘 프로세스가 내부 Lock 이나 메모리를 보유하고 있으면 그것을 해제
  • pmon timer 대기 이벤트
    • 필요한 경우 청소 약 1분에 한번 수행
  • pmon 자체가 비정상종료하면 인스턴스가 정지됨

LPEG

  • Listener REGistration
  • 인스턴스의 정보, 현재프롯스의 수, 인스턴스의 부하를 리스너에게 등록하는 작업
  • if oracle <= 11g PMON
    • else if oracle >= 12c LPEG
  • listener.ora 파일에 인스턴스의 정보를 등록하지 않더라도 리스너는 인스턴스의 정보를 알고있는 경우가있는데 LPEG가 리스너에 정보를 등록했기 때문
  • 1분마다 인스턴스정보, 현재프로세스수,부하등의 정보를 1분마다 한번씩 리스너 프로세스에게 알려줌

ARCH

  • ARCHiver
  • REDO 로그 파일을 아카이브하는 프로세스
  • 아카이브 로그 모드 (REDO 로그를 아카이브해서 남기는 모드)일땐 아카이브 REDO 로그가 생성될떄까지 해당 REDO 로그파일을 다시 사용할수없음
    • 따라서 ARCH 프로세스가 중지되면 디비에 큰 문제가 발생할 수 있음
  • 평소엔 rdbms ipc message 대기 이벤트
  • ARCH 프로ㅔ스는 노-아카이브 로그 모드에서는 생성도지ㅣ 않음
  • 디비 복제/동기화를 말하는 데이터 가드 기능을 사용할떄 ARCH 프로세스 사용

그외 백그라운드 프로세스

  • 214p 표
profile
TIL 남기는 공간입니다

0개의 댓글