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..
UPDATE 실행 원리 UPDATE 실행 원리 select 문장의 실행 단계(parse -> bind -> execute -> fetch) 와 비슷하나 dml(insert, update, delete, merge)문장의 실행단계에는 추출(fetch)단계가 없고 대신 실행(execute)단계가 조금더 복잡하다. 일단 soft parse 하고 실패하면 hard parse해서 서버프로세스는 실행계획을 가지고 library cache에 등록후 실행(execute)를 수행한다. Soft parse에서는 문법검사, 의미검사후 권한검사를 수행하고 shared pool의 library cache에서 실행계획이 있는지 확인한다. 실행계획이 없을 경우 hard parse를 수행해서 옵티마이져에게 실행계획을 생성해달라고 요..
ORACLE BACKGROUND PROCESS ORACLE BACKGROUND PROCESS :ORACLE 서버와 관련된 프로세스 종류는 user process(sql 문장을 서버프로세스로 전달 해주고 결과를 가져오는 프로세스), server process(user process가 전해준 sql문장을 실제 수행하는 프로세스), backgroud process(oracle 서버가 시작되면 자동으로 시작되며 운영과 유지를 담당하는 프로세스) 오라클서버의 시작과 종료와 같고 호빗과 같은 존재이다 필수 ORACLE BACKGROUND PROCESS :- DBWR, LGWR, PMON, SMON, CKPT, MMON & MMNL, RECO 선택 ORACLE BACKGROUND PROCESS :- ARCN, CJQ..
ORACLE 시작, 단계별 INSTANCE OPEN ORACLE 시작 : - ORACLE DATABASE가 OPEN 되어 있어야 DB에 저장되어 있는 정보를 조회하거나 DATA를 입력또는 변경 할 수 있다.- ORACLE 서버를 시작하려면 SYSDBA 권한을 가지고 있는 계정으로 로그인 해야한다.]# sqlplus 아이디/비번 as sysdbaSQL> startup; ORACLE 서버 시작 단계 : 1. NOMOUNT 단계 :- STARTUP 실행시 INSTANCE를 시작하기위해 ORACLE SERVER PROCESS는 가장먼저 PARAMETER FILE을 읽게된다- NOMOUNT 단계에서 PARAMETER FILE에 저장되어 있는 값을 참조하여 SGA와 BACKGROUND - ALTER LOG FILE..