[WareValley Orange DB Study][2015 03-20] Oracle architecture

8
WareValley http://www.WareValley.com Database Audit and Protection [ DB 접근통제 ] Database Encryption [ DB 암호화 ] Database Vulnerability Assessment [ DB 취약점 분석 ] Database SQL Query Approval [ DB 작업결재 ] Database Performance Monitoring and Management [ DB 성능관리 및 개발 ] WareValley Oracle Architecture 오렌지팀 윤석준 선임연구원

Transcript of [WareValley Orange DB Study][2015 03-20] Oracle architecture

Page 1: [WareValley Orange DB Study][2015 03-20] Oracle architecture

WareValley http://www.WareValley.com

Database Audit and Protection [ DB 접근통제 ]

Database Encryption [ DB 암호화 ]

Database Vulnerability Assessment [ DB 취약점 분석 ]

Database SQL Query Approval [ DB 작업결재 ]

Database Performance Monitoring and Management [ DB 성능관리 및 개발 ]

WareValley

Oracle Architecture 오렌지팀 윤석준 선임연구원

Page 2: [WareValley Orange DB Study][2015 03-20] Oracle architecture

Database security and management, WareValley. http://www.WareValley.com

Oracle Architecture

User Process

Listener

Server Process

User Process

User Process

User Process

Server Process

Server Process

Server Process

Instance

SGA (System Global Area)

Background Process

Oracle Database

Data Files Control Files

Online Redo Log

Offline Redo Log Feles Parameter

FILE

Password FILE

PGA (Program Global Area)

PGA (Program Global Area)

PGA (Program Global Area)

PGA (Program Global Area)

Page 3: [WareValley Orange DB Study][2015 03-20] Oracle architecture

Database security and management, WareValley. http://www.WareValley.com

Oracle Memory

Server Process

Instance

Background Process

PGA (Program Global Area)

SGA (System Global Area)

PGA (Program Global Area) - Process 혹은 Thread의 개별적인 메모리 공간 - 사용자마다 개별적으로 사용하는 공간

SGA (System Global Area) - Oracle Process 들이 접근하는 큰 공유 메모리 - Server Process 와 Background Process 가 공용으로 사용

Page 4: [WareValley Orange DB Study][2015 03-20] Oracle architecture

Database security and management, WareValley. http://www.WareValley.com

Oracle Instance : PGA (Program Global Area)

PGA

정렬 공간 (Sort Area)

변수 저장 공간 (Stack Space)

세션 정보 (Session

Information)

커서 상태 정보 (Cursor State)

정렬 공간 : ORDER BY 또는 GROUP BY 등의 정렬을 수행하기 위한 공간이며 해당 공간에서만 정렬이 완료된다면 이를 메모리 정렬이라고 한다. 해당 정렬 메모리 공간이 부족하다면 디스크를 이용

세션 정보 : 서버 프로세스에 의해 추출된 결과 값을 전달하기 위해 필요한 유저 프로세스의 세션 정보를 저장

커서 상태 정보 : 해당 SQL 파싱(Parsing) 정보가 저장되어 있는 주소를 저장

변수 저장 공간 : SQL 문장에 바인드 변수(Bind Variable)를 사용 했을 경우 해당 바인드 변수를 저장하는 공간

Page 5: [WareValley Orange DB Study][2015 03-20] Oracle architecture

Database security and management, WareValley. http://www.WareValley.com

Oracle Instance : SGA (System Global Area)

공용 메모리 영역으로 모든 사용자가 동일한 SGA를 사용

DB Buffer Cache : 빠른 입출력을 위해서 Datafile을 읽어서 Block 단위로 저장해 놓는 Cache Memory

Shared Pool

- Data Dictionary Cache : Oracle Dictionary 정보를 저장해두는 Cache Memory

- Library Cache : 사용자가 던진 SQL문과 Execution Plan을 저장해두는 Cache Memory

Redo Log Buffer : Datafile 과 Controlfile에 가해지는 모든 변경 사항을 저장

Large Pool : 선택적 Memory 영역으로, Backup, Parallel Processing, Redo Buffer 관리 등의 목적에 사용됨

Java Pool : 선택적 Memory 영역으로, Oracle JVM에 접속해있는 모든 세션의 Java Code가 사용

Stream Pool : 10g부터 지원되는 Oracle Stream (다른 DB로 Data 전달)에 사용

Redo Log

Buffer RECYCLE DEFAULT

Data Buffer Cache

SGA (System Global Area)

Java Pool

Large Pool

Streams Pool

Library Cache

•SQL, SQL(recursive SQL)

•Parse Test

•Execution Plan

Data Dictionary Cache

•Row Cache

•Object Information

•Security

Shared Pool

Server Process

Background Process

Page 6: [WareValley Orange DB Study][2015 03-20] Oracle architecture

Database security and management, WareValley. http://www.WareValley.com

Shared Pool – Library Cache

사용자가 실행시키는 SQL 문장을 저장 Library Cache

•SQL, SQL(recursive SQL)

•Parse Test

•Execution Plan

Data Dictionary Cache

•Row Cache

•Object Information

•Security

Shared Pool

SELECT * FROM Tbl WHERE ID = '1234'; -- e.g. Dynamic SQL SELECT * FROM Tbl WHERE ID = ‘5678';

위 2 SQL문은 다른 SQL문이라서 Shared SQL Pool에 따로 공간을 차지하게 된다.

뿐만 아니라 SQL Parsing 도 따로하고, Execution Plan도 따로따로…

SELECT * FROM Tbl WHERE ID = :id; -- e.g. Static SQL

한 번의 Parsing 으로 만들어진 Execution Plan을 계속해서 재사용 한다.

Page 7: [WareValley Orange DB Study][2015 03-20] Oracle architecture

Database security and management, WareValley. http://www.WareValley.com

Oracle Background Process

Background Process

PMON SMON DBWn CKPT LGWR ARCn etc

User 연결 유무와 상관없이 항상 Background로 실행

PMON (Process Monitor) : Server Process 관리. 잘못된 Process 파괴 및 자원해제, 잘못된 Transaction 문제 해결

SMON (System Monitor) : DBMS의 CEO. 모든 작업 총관리 ( 임시 세그먼트 정리, 딕셔너리 관리, 재시작시 복구 담당)

DBWn (Database Writer) : Memory 상의 변경이 일어난 Block을 디스크로 저장

CKPT (Check Point) : 모든 Control File과 Data File의 해더를 최근의 체크포인트 정보로 갱신 (저장된 Data를 일치시키는 작업)

LGWR (Log Writer) : 승인된 Transaction을 Redo Log File에 기록

ARCn (Archiver) : Database가 작동하는 동안 백업 작업을 수행

RECO (Recoverer Process) : 분산 시스템간의 Transaction 을 맞춰주는 역할

서울에 있는 은행과 부산에 있는 은행간에 이체 작업에서 물리적으로 다른 DB Server 간의 Two-phase Commit

(양쪽 모두 Prepare-phase 한 뒤, 둘 다 Commit 한 것이 확인되지 않으면 RECO가 Rollback 시킨다.)

Page 8: [WareValley Orange DB Study][2015 03-20] Oracle architecture

Database security and management, WareValley. http://www.WareValley.com

Database Writer

BEGIN TRANSACTION;

DELETE FROM Tbl1 WHERE ID < 200000;

COMMIT;

위 실행문 중 가장 시간이 오래 걸리는 명령어는 ?

=> 다들 DELETE 라고 쉽게 말 할 것이다.

그럼 COMMIT는 ?

=> 눈깜짝하기도 전에 끝 !

만약 COMMIT을 하지 않고 Server를 Reboot 한다면 ?

=> 켜지는데 시간이 더 오래 걸린다.

일단 Disk에서는 지워지는 걸로…

COMMIT 하기 전에 Disk에서는 이미 지워진 상태

이미 Disk에서는 지워졌지만, 어딘가에서 읽어서

ROLLBACK 작업을 수행

Data Buffer Cache LRU 작동 설명

Dirty Buffer(더티 버퍼) 변경은 완료되었지만 디스크에 기록되지 않은 버퍼

Pinned Buffer(사용중 버퍼) 변경중인 버퍼

Free Buffer(프리 버퍼) 변경이 완료된 후 디스크에 기록된 버퍼

Crean(제거버퍼) 삭제대상