171220 오라클 - RYUDONGJIN/Memo_wiki GitHub Wiki

오라클 서버(Oracle Server)

  • 정의 : 통합적인 정보관리를 위한 객체 관계형 데이터베이스 관리 시스템.
  • 오라클 인스턴스(Oracle Instance)와 오라클데이터베이스(Oracle Database)로 구성

오라클 인스턴스(Oracle Instance = SGA)

  • 백그라운드 프로세스와 메모리 버퍼(Memory Buffer)로 구성

시스템 글로벌 영역(SGA, System Glober Area)

  • 오라클 데이터베이스 모든 사용자의 제어 정보와 데이터를 포함하며, 사용자가 실행하는 SQL문에 의해 검색 또는 변경되는 테이블 데이터를 저장하는 오라클 서버의 공유 메모리 영역
  • 하나의 SGA와 오라클 프로세스가 하나의 오라클 인스턴스를 구성
  • 오라클은 인스턴스가 시작될 때(오라클서버 시작시) 자동으로 SGA를 위한 메모리를 할당하고, 인스턴스를 종료(Shutdown)하면 운영체제가 메모리를 회수
  • SGA는 여러 사용자가 공유

오라클 구조

  1. 공유 풀(Shared Pool)
  • 구성 : 라이브러리 캐시(Library Cache)와 데이터 사전 캐시(Data Dictionary Cache), 그리고 버퍼로 구성
  • 공유SQL영역 : SQL문장 하나를 실행하는데 이용된 정보를 가지고 있으며 동일한 SQL문장을 실행하는 프로세스들 간에 정보를 공유, 완전히 동일한 문장만 같은 메모리에 위치
  • 데이터사전 캐시 : 데이터베이스와 그 구조, 데이블과 뷰의 이름, 테이블이 컬럼명과 데이터 유형, 모든 사용자 권한
  1. 데이터베이스 버퍼 캐시(Database Buffer Cache)
  • 디스크로부터 읽어온 블록의 데이터의 복사본을 보관하는 메모리 영역
  • 사용자가 실행한 SQL문에 정의된 테이블이 존재하는 데이터 파일로부터 테이블을 읽어서 저장하는 공간으로 데이터 수정이 일어나기 전의 데이터를 보관하는 Before Image와 수정한 후의 데이터를 보관하는 After Image로 구성
  • 캐시 실패: 데이터를 처음 Access하면 서버 프로세스는 디스크로부터 데이터를 읽어 캐시에 올린다.
  • 캐시 적중: 데이터에 Access할 때 이미 캐시에 있다면 메모리에서 직접 데이터를 읽는다.
  1. 리두 로그 버퍼(Redo Log Buffer)
  • 데이터베이스에서 일어난 모든 변화를 저장하는 메모리 공간
  • 데이터베이스에서 발생한 모든 변화는 LGWR에 의해 리두로그 파일에 저장
  • 리두로그 버퍼는 데이터베이스의 변경 사항 정보를 유지하는 SGA에 있는 Circular(순환) 버퍼임
  • 리두로그 버퍼의 크기는 오라클 파라미터 LOG_BUFFER에서 지정
  1. 라지 풀(Large Pool)
  • 데이터베이스 관리자가 필요한 경우 사용할 수 있는 선택적인 메모리 영역
  • 많은 메모리를 필요로 하는 경우 설정해서 사용 : 오라클 공유 서버의 인터페이스를 위한 세션 메모리, I/O 서버 프로세스, 오라클 백업과 복구, 병렬 실행 메시지 버퍼 설정시

오라클 데이터베이스의 세가지 물리적인 구성 요소

  • 프로세스 : 백그라운드 프로세스(DBWR, LGWR, PMON, SMON)와 사용자 프로세스, 서버 프로세스로 구성
  • 메모리 : 공유풀, 데이터 버퍼캐시, 로그버퍼, 라지풀
  • 파일 : 데이터 파일, 컨트롤 파일, 리두로그 파일, 파라미터 파일

사용자 프로세스(User Process)

  • Pro*C/C++와 같은 응용 프로그램이나 엔터프라이즈매니저와 같은 오라클 툴을 실행할 때 사용되는 프로세스
  • 사용자가 실행시킨 SQL문을 서버 프로세스에게 전달하기 위해 사용
  • 사용자 프로세스에는 데이터베이스 접속시 사용된 사용자 이름과 패스워드 정보, 접속된 시간 등의 정보가 저장

오라클 프로세스(Oracle Process)

  • 오라클 데이터베이스 서버를 기동하는데 필요한 프로그램들을 의미

구성

  1. 서버 프로세스(Server Process)
  • 데이터베이스 내의 물리적인 구조(디스크에 저장된 데이터파일)와 메모리 구조(SGA 영역)사이를 관리하는 프로세스
  • 구문분석(Parse) : 구문상의 정확성, 보안엑서스, 최적화된 실행계획 수립
  • 실행(Execute) : 문장의 실행, 데이터 읽기와 변경
  • 인출(Fetch) : Select구문일 경우 그 결과를 사용자에게 전달한다
  1. 백그라운드 프로세스(Background Process) : 물리적으로 저장된 데이터들을 메모리(데이터베이스 버퍼캐시)에 올리는 역할을 하는 프로세스
  • 오라클 데이터베이스의 현재 상태를 모니터링하거나 사용자가 실행한 SQL문을 처리해주는 프로세스
  • 5개의 필수 백그라운드 프로세스와 그 외 다수의 프로세스 포함
  • 필수 백그라운드 프로세스 : 오라클 인스턴스가 가동될 때 시작하고 인스턴스가 중지되면 정지되는 프로세스 -> 데이터베이스 기록기 : Database Writer(DBWR) 프로세스 -> 로그 기록기 : LGWR(Log Writer) 프로세스 -> 시스템 모니터 : SMON(System Monitor) 프로세스 -> 프로세스 모니터 : PMON(Process Monitor) 프로세스 -> 체크 포인트 : CKPT(Check Point) 프로세스
  • 기타 백그라운드 프로세스 -> ARCH(Archiver)프로세스 -> RECO(Recoverer)프로세스 -> LCKn(Lock)프로세스 -> QMNn프로세스 -> LMON프로세스 -> LMDn프로세스 -> Pnnn프로세스 -> Dnnn프로세스 -> Snnn프로세스