본문 바로가기

Oracle/성능 분석과 인스턴스 튜닝 정리

오라클 데이터베이스 아키텍처

Oracle Architecture 3대 필수 항목은 프로세스, 메모리, 데이터파일이 있고 오늘 포스팅은 3대 항목의 종류에 대해서 정리하고 마지막으로 DB에 접속하고 SELECT SQL의 실행 동작을 살펴본다.

 

오라클 아키텍처 구성요소 3대 필수 항목

1. 프로세스 종류

  • User Process : 우리가 SQL을 작성하기 위해서 Orange , Sqldeveloper 툴로 연결하거나 JDBC와 같은 애플리케이션에서 연결하는 프로세스를 말한다.
  • Oracle Server Process : User Process 가 Listener에 접속을 하고 이때 접속에 성공하면 Oracle Server Process가 하나 생성된다. 쉽게 생각해서 User Process와 Oracle Server Process는 1:1 관계로 생성된다.
  • Oracle Backgound Process : SMON, PMON, DBWR, CKPT, RECO, LGWR 등 매우 많은 프로세스가 존재한다.

Oracle Connection & Server Process

2. 메모리 종류

  • PGA ( Program Global Area) : User Process의 연결로 생성된 Server Process 에서 사용되는 Non Shared Memory 
  • SGA ( System Global Area) : 모든 Server Process 가 접근할 수 있는 Shared Memory

SGA / Background Process / Database file

3. 데이터베이스 파일

  • Datafile : 오라클 DB를 구성하는 주요 파일로서 주로 사용자 데이터가 저장된다.
  • Redo Log File : DML과 같은 데이터의 변경사항을 실시간 기록한다.
  • Control File : 오라클 Structure 주요 변경사항을 기록한다.

 

실행순서 및 동작 알아보기

그림에서 나오는 1번부터 5번까지 살펴보자. 

 

  1. User Process : 집 PC에서 DB에 접속을 한다. 여러가지  DB 툴이나 애플리케이션 서버의 접속도 User Process를 생성한다.
  2. Listener : 비밀번호등 여러 권한을 체크한다.
  3. Server Process : 2번에서 이상이 없었다면 Server Process가 하나 만들어진다 (User Process와 Server Process 는 1:1)
  4. User Process : 사용자가 SELECT SQL을 만들어서 질의한다.
  5. Server Process : Server Process는 우선 SGA에서 해당 SQL이 있는지 확인하고, 있다면 실행계획을 다시 만들지 않고 바로 사용하며 Buffer Cache에 조회하려는 Data Block이 있다면 Data file에 접근 하지않고 메모리에서 결과를 바로 return 한다.

 

 

 

간단하게 오라클 데이터베이스 아키텍처를 확인해 봤다.  백엔드 개발자로 DB를 잘 사용한다고 생각 했는데... 그건 잘못된 생각 이였다.  이 공부를 하기 전가지 나는 아무리 어려운 SQL을 작성하더라고 그냥 사용자였을 뿐 DB공부를 깊게하지 않았다는걸 느꼈다.  RDBMS 나 NoSql 등 내가 개발자로 살아가는 한 이 DB를 깊게 이해 하는건 엄청난 무기가 될 것이라고 확신한다. (이미 JPA를 공부 하면서 JPA의 동작방식에 대해서 조금더 깊에 이해하는데 큰 도움이 되고 있다. )