ORACLE MEMORY STRUCTURE (오라클 메모리 구조) ORACLE MEMORY STRUCTURE (오라클 메모리 구조) SYSTEM GLOBAL AREA (SGA), PROGRAM GLOBAL AREA (PGA) : 물리적인 RAM 안에 생성된다 SGA : INSTANCE 별로 1개 생성, INSTANCE에 접속해서 사용자가 공유하는 메모리 공간, SQL 수행공간 PGA : 각 사용자의 서버프로세스 별로 1개씩 독립적으로 생성되는 공간 ORACLE INSTANCE 구조 ORACLE INSTANCE : SGA 와 BACKGROUND PROCESS 로 구성되어있다. ORACLE이 시작되면, RAM 안에 ORACLE DATABASE에 모든 프로세스가 공요할 수 있는 공간을 서버프로세스가 만든다. ..
DATABASE BUFFER CACHE DATABASE BUFFER CACHEDATA를 파일에서 BLOCK으로 복사해서 가져온 후 조회/변경 작업을 하는 공간 DBC 상태 3 가지 분류 이유 : 동시에 하나의 블록에 접근 시도하면 KERNEL PANINC 및 DATA 훼손가능- PINNED BUFFER : 사용자가 현재 사용하고 있는 BUFFER BLCOK- DIRTY BUFFER : 사용자 사용완료후 변경내용 저장 전- FREE BUFFER : UNUSED 아니면 DIRTY BUFFER 였다가 저장 완료된 블록 DBC 상태 관리 리스트 : LRUW 와 LRU- LRU LIST 메인 리스트 : FREE BUFER LIST ( HOT 영역, COLD 영역)보조 리스트 : FREE BUFFER LIST (U..
REDO LOG BUFFER REDO LOG BUFFERDATA BLOCK에 변경사항 (DDL, DML) 생길경우 해당 내용 기록. 장애복구용. TRANSACTION 수행중 장애발생시 해당변경 사항 복구 용도 ( COMMIT된 DATA & ROLLBACK된 DATA)COMMIT 후 CHECKPOINT 전 DB 가 정전이 되면, 해당 DATA를 ROLL FORWARD (DBC의 변경내용 저장완료후 한번 더 저장) REDO LOG 생성 및 기록원리 기록 두가지 규칙 :- WRITE LOG AHEAD (선 로그 기법) : DATA 변경/ 저장 전 REDO LOG BUFFER & REDO LOG FILE 에 먼저 기록- LOG FORCE AT COMMIT : REDO RECORD(LOG) 들을 COMMIT 요청..
SHARED POOL, LARGE POOL, JAVA POOL, STREAMS POOL FIXED SGA 1. SHARED POOL : SGA의 구성요소로서 다른 사용자와 어떤 대상을 공유해서 사용하기 위해 만들어진 공유풀.LIBRARY CACHE, DATA DICTIONARY CACHE, 11 G 부터 SERVER RESULT CACHE로 구성됨 LIBRARY CACHE - LRU 알고리즘으로 관리됨- SOFT PARSE 할때 사용되는공간- 실행되었던 SQL문장 & PL/SQL 문장 저장 (PARSE된, COMPILE된)- 실행계획 저장 * LRU 알고리즘이란 ? (LEAST RECENTLY USED) : 총 양이 정해져 있는 공간 (SHARED POOL)에 들어가야 할 경우 최근에 사용한것을 남겨두고..
PGA (PROGRAM GLOBAL AREA) PGA (PROGRAM GLOBAL AREA) :- 각 프로세스들이 개별적으로 사용하는 메모리공간- 서버프로세스나 백그라운드 프로세스들은 전부 각각의 용도에 맞게 PGA를 사용함 PGA 구조 ( INSTANCE PGA) 용량 설정 :OLTP일 경우 : PGA_AGGREGATE_TARGET = (총 물리 메모리용량 X 0.8 ) X 0.2DSS일 경우 : PGA_AGGREGATE_TARGET = (총 물리 메모리 용량 X 0.8 ) X 0.5 PRIVATE SQL AREA- SERVER PROCESS가 USER PROCESS로 부터 SQL 문장을 받은후 USER PROCESS정보를 SESSION MEMORY에 저장후 SQL 문장을 PARSE 작업을 시작- 해당..
SCN(SYSTEM COMMIT NUMBER) SCN(SYSTEM COMMIT NUMBER) :COMMIT 할때 해당 트랜잭션에게 부여되는 고유번호를 관리하여 INSTANCE RECOVERY 나 RECOVER 명령 실행 때ORACLE은 SCN 정보를 사용하여 DB에 문제가 있는지 없는지 확인. DML 문장 단위로 할당 되는것이 아니라, 트랙잭션 단위로 할당됨 구성단위 : SCN BASE (4 BYTES) + SCN WRAP (2 BYTES) 로 구성16,384회를 발생시켜도 약 534년 정도 사용 (281,474,976,710,656) 534년 뒤에는 SCN WRAP 값이 하나씩 증가되어 사용되고, 다 사용되면 다시 0으로 RESET되어서 새로운 INCARNATION 으로 할당되어서 다시 시작 구현방식 ..
SCN(SYSTEM CHANGE NUMBER) SCN(SYSTEM CHANGE NUMBER) :DATA FILE, REDO LOG FILE, CONTROL FILE간의 동기화 정보 맞추기 위해 사용 구성단위 :SCN BASE (4 BYTES) + SCN_WRAP (2 BYTES) + SCN_SEQUENCE (1 BYTES) SCN_SEQUENCE :동인한 SCN BLOCK 을 여러개의 서버프로세스가 동시에 변경할 경우 이를 구분하기 위함 기록 장소 :DATA BLOCK HEADER, REDO RECORDS, SEGMENT HEADER
CHECKPOINT CHECKPOINT :- Commit 된 Data 저장번호. Control File과 Data File의 Checkpoint 정보를 비교해 정보가 다르면 틀린 부분을 Online Redo Log나 Archived Redo Log를 참조해서 복구. DB Buffer Cache의 변경된 Dirty Buffer들을 Data File로 저장하는것. CHECKPOINT 종류 :DATABASE/GLOBAL CHECKPOINT : Checkpoint 발생 후 DB Buffer Cache 내 모든 저장 안된 Dirty Buffer 내용을 디스크에 저장함. 저장된 SCN 중 Checkpoint SCN ( 가장 번호가 큰 SCN )을 Control File과 Data File Header 부분에 기록 ..
COMMIT PARAMETER COMMIT PARAMETER 확인방법SQL> show parameter commit; commit_point_strength : 분산 데이터베이스 환경에서 2-phase commit 에서 사용 commit_write : commit 후 LGWR이 REDO LOG FILE에 기록하는 4가지 방식1. WAIT : 변경된 트랜잭셕이 REDO LOG FILE에 기록될 때까지 기다림2. NOWAIT : 변경된 드랜잭션이 REDO LOG FILE에 기록될 때까지 기다리지 않음3. IMMEDIATE : commit 후 즉시 REDO LOG FILE에 기록시작4. BATCH : commit 이 들어와도 일정 시간동안 모아서 한꺼번에 기록 * 보통은 4가지 방식을 2개씩 조합해서 사용한다..
SQL 문장 실행 원리 SQL 문장 실행 원리 3. SHARED POOL의 LIBRARY CACHE 검사해서 실행계획 있는지 확인후 있으면 7번으로~ 5. 여러개의 실행계획을 OPTIMIZER가 만들면 RAW SOURCE GENERATOR 에게 보낸후RSG가 가장 좋은것을 선택한다. 그리고 서버프로세스에게 주면 그것을 LIBRARY CACHE에등록한 후 PGA로 복사해서 가져온 후 6번으로 넘어간다. 셀렉트 문장이 수행되는 4단계의 순서는 PARSE(구문분석)-> BIND(값치환) -> EXECUTE(실행) -> FETCH (인출)이다. PARSE(구문분석)은 SQL문장 실행시 서버프로세스는 유저 프로세스에게 SQL문장을전달받고 SQL PARSER을 통해서 문장에 쓰인 키워드, 컬럼명 등을 분석해서 PA..