📌 2장에서는 오라클에는 어떤 프로세스가 있고, 어떤 식으로 병렬 처리를 수행하는지 알아보며
SQL*Plus 등의 각종 프로그램과 데이터를 주고받는 구조를 설명합니다.
2.1 | 오라클의 역할 이미지
· 오라클을 포함한 DBMS(데이터베이스 관리 시스템)의 기본적인 동작은 '창고업자'로 비유할 수 있음. '데이터를 짐처럼 맡아서 보관하고, 요구에 따라 데이터를 반환한다'는 점에서 꽤 비슷함
· 시스템에서 데이터베이스는 데이터를 보관하는 장소로 사용되고 있으며, 애플리케이션이 데이터를 보관하고(또는 변경하거나 꺼내고) 싶을 때 사용
· 애플리케이션은 업무 처리나 화면 처리를 수행·처리하다가 '이 데이터가 필요하다'라고 생각한 시점이 되면 데이터베이스에 접근해서 데이터를 꺼내옴. 애플리케이션도 변수의 형태로 데이터를 보관할 수 있지만, 이는 어디까지나 메모리에 임시로 저장하고 사용하는 것. 따라서, 종류가 많고 크기가 큰 데이터를 취급하는 시스템에서는 데이터베이스를 만들어 데이터 관리를 맡김
2.2 | 데이터베이스의 데이터는 모두의 것
2.2.1 실제 모습에 가까운 오라클의 이미지
· 오라클에게 각종 프로그램(SQL*Plus, JDBC)은 고객(클라이언트)이라고 볼 수 있으며, 오라클은 SQL문과 그 결과의 데이터를 프로그램과 송수신함. DBMS인 오라클은 해당 데이터를 디스크에 저장하고 관리함. 고객(클라이언트)인 각종 프로그램과 의뢰를 받는 오라클의 프로세스는 여러개 존재
· 데이터베이스는 기본적으로 데이터를 중복으로 보관하지 않으며, 보관해서도 안됨
· 기본적으로 '여러 사용자나 프로그램이 데이터베이스의 데이터를 공유하고 있다' 라고 생각하는 것이 중요
2.2.2 엑셀과 DBMS의 차이
· 엑셀은 하나의 PC에서 작동하며, 단일 사용자가 사용
· DBMS는 다수의 사용자나 애플리케이션이 데이터를 공유한다는 전제로 만들어져 있어 많은 사용자가 데이터를 동시에 검색하거나 변경할 수 있음. 또한, 다수의 사용자가 동시에 데이터를 처리하는 경우에는 사용자의 실수로 데이터가 손상되지 않도록 처리하는 Lock이라는 장치를 가지고 있음
2.3 | 오라클이 여러 개의 프로세스로 구성된 이유
· SQL문이 처리되는 긴 시간과 현재 사용자의 작업 간 CPU 같은 자원을 방치하는 것은 비효율적
· 오라클은 다중 처리를 위해 여러 개의 프로세스로 구성됨. 여러 개의 프로세스를 실행하는 방식으로 병렬 처리를 사용
2.4 | 서버 프로세스와 백그라운드 프로세스의 역할
· 오라클은 다음의 두 가지 프로세스로 구성됨
- 서버 프로세스(SQL문을 처리하는 프로세스)
- 백그라운드 프로세스(주로 서버 프로세스를 지원하는 프로세스)
2.4.1 서버 프로세스 프로세스의 일
· 서버 프로세스는 서비스를 수행하며, SQL문을 처리하여 오라클 클라이언트에게 서비스를 직접 제공
2.4.2 백그라운드 프로세스의 일
· 백그라운드 프로세스는 서버 프로세스와는 달리, 오라클 클라이언트에게 직접 서비스를 제공하지는 않음. 전면에 나서지 않는 지원 스태프에 해당하는 프로세스
· 종류(일부)와 역할
1) DBWR(Data Base Writer) : 데이터를 디스크에 기록함
2) LGWR(Log Writer) : 로그(데이터 변경 이력)를 디스크에 기록함
3) PMON(Process Monitor) : 프로세스를 감시하고, 프로세스에 장애(비정상 종료 등)를 발견했을 때 정리
4) ARCH(ARCHiver) : 로그 데이터를 아카이브(장기 보관하기 위해 별도의 파일로 보관)함
2.5 | 각 프로세스가 수행하는 처리
· 오라클에서 수행하는 주요 처리는 다음과 같음
① SQL문의 수신
② SQL문의 파싱(어떤 테이블에 어떻게 접근해야 하는지를 생각하는 작업)
③ 데이터 읽기(디스크에서 읽어옴)
④ 데이터 기록(디스크에 기록)
⑤ SQL문의 결과 회신
⑥ 로그 기록(데이터의 변경 로그를 디스크에 기록)
⑦ 각종 정리(프로세스의 비정상 종료로 인한 아무도 사용하지 않는 Lock의 해제 등)
⑧ 로그 보관(아카이브)
2.5.1 SQL문의 처리에 필요한 작업
· 오라클은 SQL문을 수신하지 않으면 작업을 처리하지 않으며, 파싱(parsing)이라는 절차를 거치지 않으면 어떤 테이블에 접근해야 하는지 조차 알 수 없음. 당연히 디스크에서 데이터를 읽어오지 않으면 데이터를 처리할 수 없음. 또한, 데이터나 결과를 오라클 클라이언트에게 전달하지 않으면 종료할 수 없음
· SQL문의 결과를 회신하는 데 필요한 것은 서버 프로세스가 수행하고, 그 이외의 것은 백그라운드 프로세스가 수행
· 데이터를 디스크에 기록하는 일은 백그라운드 프로세스인 'DBWR(데이터베이스 라이터)'가 수행해줌.

2.6 | 요약
· 데이터베이스는 모두 공유해서 사용
· 애플리케이션이나 SQL*Plus 같은 오라클 클라이언트가 여러 개 존재. 여러 개의 SQL문이 오라클에 전달됨
·오라클 위에서 여러 개의 SQL문이 동시에 동작하고 있다
·서버 프로세스는 SQL문의 결과를 가능하면 빠르게 회신하기 위한 일을 한다(고객을 최우선으로 영업한다)
·서버 프로세스를 도와주는 백그라운드 프로세스가 존재한다(지원 스태프)
'📕 Oracle > [서적] 그림으로 공부하는 오라클 구조' 카테고리의 다른 글
| [Oracle 구조] 6. 커넥션과 서버 프로세스의 생성 (1) | 2023.12.30 |
|---|---|
| [Oracle 구조] 5. 오라클의 기동과 정지 (1) | 2023.12.29 |
| [Oracle 구조] 4. SQL문 분석과 공유풀 (1) | 2023.12.26 |
| [Oracle 구조] 3. 캐시와 공유 메모리 (1) | 2023.12.25 |
| [Oracle 구조] 1. I/O와 디스크의 관계 (0) | 2023.12.24 |