Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

1,103 views

Published on

[WareValley Orange DB Study]
[2015 03-20]
Oracle Architecture
+ 윤석준

Published in: Software
  • Login to see the comments

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

  1. 1. 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 오렌지팀 윤석준 선임연구원
  2. 2. 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)
  3. 3. 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 가 공용으로 사용
  4. 4. 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)를 사용 했을 경우 해당 바인드 변수를 저장하는 공간
  5. 5. 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 BufferRECYCLE 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
  6. 6. 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을 계속해서 재사용 한다.
  7. 7. 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 시킨다.)
  8. 8. 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(제거버퍼) 삭제대상

×