mingming

Oracle DB Architecture - Process 본문

새싹 하이브리드 클라우드/Database

Oracle DB Architecture - Process

mingming_96 2023. 10. 12. 23:38

유저 프로세스

  사용자가 오라클 서버에 접속해 작업을 수행할 때 서버 프로세스가 아닌 응용프로그램을 의미합니다. 유저 프로세스는 서버와연결하기 위해 리스너 프로세스와 먼저 통신하고 연결이 받아들여지면 리스너 프로세스는 서버 프로세스를생성하고유저 프로세스와 연결을 맺어주게 됩니다. 유저 프로세스는 해당 세션의 정보와수행하고자 하는 SQL 정보를 데이터베이스의 서버 프로세스에게 전달합니다.     

 

서버 프로세스 

유저 프로세스의 요청을 처리하는 프로세스 입니다. 유저 프로세스가 수행이 필요한 SQL과 해당 세션 정보를 가지고 데이터베이스에 요청하게 되면 데이터베이스로부터 하나의 프로세스를 할당받게 됩니다. 이 프로세스는 유저 프로세스로부터 요청받은 사항을 수행하며 이를 서버 프로세스라고 합니다.   

 

백그라운드 프로세스 

오라클 메모리 구조인 SGA 관리 등의 내부적인 작업 수행을 위해 필요한 프로세스 입니다. 그렇게 때문에 오라클이 기동과동시에 해당 프로세스 중 일부 필수 프로세스는 반드시 기동되어야 합니다.   

 

필수 백그라운드 프로세스

데이터베이스가 구동되어 운영되기 위해 반드시 필요한 데이터베이스 관리 프로세스입니다. 해당 프로세스중 하나라도 문제가 발생하면 데이터베이스는 Shutdown 됩니다. 

 

데이터 버퍼 캐시

구분 내용
더티 버퍼 변경은 완료되었지만 디스크에 기록되지 않은 버퍼
Pinned 버퍼 변경 중인 버퍼로 해당버퍼를 사용하고자 하는 다른 세션은 대기 
Free/Unused 버퍼 인스턴스가 시작된 직후 비어있는상태의 버퍼 
Clean 버퍼  변경이 완료된 후 디스크에기록된버퍼로 재기록 될 수 있는 상태의 버퍼   

 

DBWR( Database Writer )

데이터베이스 시스템의 필수 백그라운드 프로세스 중 하나입니다. 데이터 버퍼캐시에 있는 더티 버퍼를 데이터 파일에 기록하는 역할을 합니다. 기록된 버퍼는 Clean 버퍼로 상태가 변경됩니다. 

 

DBWR 특징

  • 지연쓰기( Deferred Write )
    • DBWR 백그라운드 프로세스는 지연 쓰기 방식에 의해 더티 버퍼를 디스크에 기록합니다.
    • 데이터 버퍼 캐시로 복사된 블록이변경될 경우 변경 즉시 디스크에 기록하는 것이 아니라 여러개의 변경된 데이터 블록을 한 번에 모아서 디스크에 기록합니다.
    • 이러한 지연쓰기 방식은 디스크 I/O를 줄여 부하를 줄여줍니다. 
  • 빠른 커밋( Faster Commit )
    • 빠른 커밋이란 데이터 변경을 완료하고 커밋을 수행하면 변경된 내용을 즉시 디스크로 기록하지 않는 지연 쓰기 방식을 사용하는 대신 변경에 대한 로그 정보는 바로 기록하는 방법입니다.
    • 로그 정보는 LGWR 프로세스에 의해 온라인 리두 로그 파일에 기록됩니다. 
    • 빠른 커밋을 통해 장애 발생시 지연쓰기로부터 데이터 정합성을 유지할 수 있습니다.    

 

DBWR 활동 주기

  • 체크포인트가 발생했을 경우
  • 더티 버퍼의 수가 임계치에 도달했을 경우
  • Clean/Free 버퍼가 필요하여 데이터 버퍼캐시에서 일정한 수의 버퍼를 검색하고도 Clean/Free 버퍼를 찾지 못했을 경우
  • 테이블스페이스가 오프라인 또는 읽기 전용 모드로 변경될 경우
  • 테이블이 DROP 되거나TRUNCATE 될 경우
  • 테이블스페이스에 온라인 백업 명령이 수행될 경우
  • 주기적인 타임아웃에 의해 발생    

 

LGWR ( Log Writer )

리두 로그 버퍼에 기록된 내용을 어떤 주기나 특정 조건에 의해 리두 로그 파일에 기록하는 프로세스 입니다.  

 

LGWR 특징 

  • 빠른 커밋 
    • DBWR 에서 기술 했듯이 커밋을 수행하더라도 디스크에 바로 기록하진 않지만 로그 정보는 바로 기록
  • Write-Ahead
    • DML 작업을 수행할 경우 실제 데이터에 대해 DML을 수행하기전에 데이터들의 변경에 대한 내용을 리두 로그 버퍼에 미리 저장하는것을 의미   
  • 동시 쓰기
    • 커밋시 로그를 기록하는 부분에서 같은 시점에 커밋되는 작업에 대해서는 동시에 리두 로그 파일에 기록  
    • 동시 쓰기를 통한 디스크 I/O 횟수를 감소시킴으로써 성능 향상

LGWR 활동 주기

 

PMON( Process Monitor )

PMON 백그라운드 프로세스는 인스턴스의 모든 프로세스를 감시하고 실행이 정지된 프로세스를 복구합니다.
유저 프로세스가 실패할 경우 또는 서버 프로세스가 비정상 종료될 경우에 프로세스 복구를 수행하고 데이터 버퍼 캐시를 정리하며 서버 프로세스가 사용하던 자원을 해제합니다.

PMON 프로세스 활동 주기 

  • 실패한 프로세스가 수행 중이던 트랜잭션 롤백 
  • 실패한 프로세스가 획득했던 메모리, 락 및 기타 자원 할당 해제
  • idle 세션 타임아웃에 대한 모니터링

 

LREG  ( Listener Resgistration )

리스너에게 인스턴스, 서비스, 핸들러 정보를 공지하는 작업을 수행하는 프로세스 입니다.  Oracle 12C 버전에서 새롭게 등장한 프로세스이며, 이전버전에 PMON 프로세스가 그 역할을 대신했습니다.  
Listener가 실행중인 경우 LREG는 인스턴스 정보를 Listener 에 등록하려고 시도합니다. Listner가 실행중이 아니라면 Listener에 연결을 시도합니다. 이는 Listener가 다시 실행될 때까지 인스턴스 정보를 등록하기 위함입니다.
등록 완료까지 일정 시간이 소요될 수 있으며 ' ALTER SYSTEM REGISTER' 명령으로 즉각적으로 등록할 수 있습니다.  

 

SMON ( System Monitor )

SMON 백그라운드 프로세스는 비정상 종료한 인스턴스가 재시작될 때 복구를 수행하며 사용하지 않는 임시 세그먼트를 정리합니다.

 

SMON 프로세스 역할

  • 인스턴스 복구 수행
    • 데이터베이스 메모리가 비정상 종료되면 DBWR 백그라운드 프로세스에 의해 메모리에서 디스크 데이터 파일에 저장되지 않은 데이터는 손실됩니다. SMON 백그라운드 프로세스는 데이터 베이스 비정상 종료 후 재시작 될 때 리두 로그 파일의 로그 정보를 엑세스하여 데이터 파일에 기록되지 않은 이전에 커밋된 데이터를 복구합니다.
  • 데이터 블록의 연속된 공간 통합
  • 임시 세그먼트 제거

롤 포워드 

커밋이 되었건 안되었건 모든 변경 데이터를 데이터베이스 적용 실제 SQL을 수행하므로 언두 세그먼트 구성

롤백

롤 포워드에 의해 적용된 변경 작업중 커밋된 작업을 제외한 다른 작업은 롤백 
( 롤 포워드 단계에서의 언두 세그먼트 재구성을 이용하여 롤백 )

 

CKPT ( Check Point )

CKPT 프로세스는 데이터 버퍼캐시의 더티 버퍼를 디스크로 기록하면서 컨트롤 파일과 데이터 파일 헤더에 체크포인트 정보를 갱신하는 프로세스입니다. 기록된체크포인트 정보를 통해 장애 발생시 데이터베이스 복구를 수행합니다.   

CKPT 활동 주기 

체크포인트는 데이터 블록의 주소 값을 저장하고 있으며 체크포인트가 발생하면 체크포인트큐 안에 존재하는 변경된 데이터 블록인 더티 버퍼를 DBWR 백그라운드 프로세스가 데이터 파일로 기록하게 됩니다.  
체크포인트가 발생하면 컨트롤 파일과 모든 데이터 파일 헤더에 체크포인트 번호를 갱신하게 됩니다. 
  • 로그 스위치가 발생할 경우
  • 3초마다 발생
  • 테이블스페이스가 오프라인으로 변경될 경우
  • 데이터 베이스가 정상 종료될 경우 
  • 사용자가 ALTER SYSTEM CHECKPOINT 명령으로 명시적인 체크포인트를 발생시킬 경우
  • 체크포인트 관련 파라메터에서 정한 값에 의해 활동 주기가 되었을 경우  ( FAST_START_MTTR_TARGET )

로그스위치 

현재 사용중인 리두 로그 파일에서 다른 리두 로그 파일로로그를 기록하는 현상을 로그 스위치라고 합니다.   

체크포인트 번호 

데이터의 정합성을 비교하는 기준입니다. 체크포인트 번호는 컨트롤 파일과 모든 데이터 파일 헫에 지속적으로 기록되고 만약 데이터베이스 오픈 시에 해당 체크포인트 번호가 일치하지 않으면 데이터베이스 복구 절차를 수행해야만 오픈됩니다.

 

복구와 성능 

항목 장점 단점
체크포인트 주기가 짧은 경우  인스턴스 복구는 마지막 체크포인트 이후부터 진행되기 때문에 체크포인트 주기가 짧다면 적용할 리두 로그 정보가 감소하게 된다. 체크포인트가 자주 발생하면 인스턴스 복구 시간이 적게 소요 됩니다.   잦은 디스크 I/O 발생으로 인한 성능저하가 발생합니다. 
체크포인트 주기가 긴 경우 체크포인트가자주 발생하지 않는다면 디스크 I/O 감소로 성능 저하가 감소합니다.  인스턴스 복구시 많은 시간이 소요됩니다.

인스턴스 복구 시간 보다는 운영상 성능이 더 중요하기 때문에 체크포인트가 자주 발생하지 않게 하는 것이 유리합니다.  

 

ARCH ( Archiver )

리두 로그 파일은 재사용 됩니다. 즉 기존의 리두 로그 정보는 삭제되는데 로그가 지워지기 전에 백업을 수행하는프로세스 입니다.  ARCH 프로세스를 기동시키기 위해선 몇가지 조건이 필요합니다.      
  • 아카이브 로그 모드 필요
  • 리두 로그 파일에 대한 백업 공간 필요 

ARCH 활동 주기 

  • 로그스위치가 발생하여 기존 리두 로그 파일을 아카이브 로그 파일로 생성해야 할 경우
  • 장애 복구 시 아카이브 파일을 사용하는 경우