Oracle DB구조1 : Database의 동작 원리를 이해하고 실제 프로젝트에 적용하기 위한 실무 가이드다.
InstanceSGA(System Grobal Area)메모리구조Shared poolLibrary cache :- 최근에 실행된 sql구문과 실행계획이 저장되는 공간- LRU(Least Recently Used Algorithm) 알고리즘으로 관리됨.- 대소문자, 공백까지 일치가 되어야 hit됨.Data dictionary cache : - 최근에 사용된 DB 정의정보가 저장된 공간- 정의정보란 file, object, 권한, 제약조건 등- LRU(Least Recently Used Algorithm) 알고리즘으로 관리됨.DB buffer cache실제 실행 작업을 하는 메모리 구조-최근에 사용된 Data block이 저장된 곳-LRU 알고리즘으로 관리됨Redo log buffer-DB에서 발생된 변경작업의 로그정보(Redo data)가 기록되는 곳-순환형으로 관리됨Background ProcessPMON- User proc fail시 진행하던 트랜잭션 롤백 및 선점하고 있던 자원과 lock을 해제함SMON- Instance fail(= DB 비정삭적인 종료) 후 DB 재시작될 때 DB동기화를 시켜줌DBWR- DB buffer cache의 Dirty block을 datafile로 기록함- 체크포인트 발생시 기록함LGWR- commit이 발생될 때 redo log buffer의 로그정보(= redo data)를 redo log file로 기록함CKPT- 체크포인트 발생시 DBWR에게 알려줌.- DBWR기록 후 datafiles 헤더와 controlfile에 마지막 체크포인트 번호를 갱신함DatabaseDatabase 3대파일Data files실제 data가 저장되는 공간data dictionary가 저장되는 공간datafile 정보 조회 : v$datafile(영구data), v$tempfile(임시data)Control fileDB의 무결성 유지/관리할 수 있는 모든 동기화정보가 기록된 공간DB의 논리적/물리적 구조 정보, 마지막 작업번호 등이 저장DB당 하나이상 존재 -> 최대8개까지 다중화기능제공오라클 권장 3개Control file 정보조회: v$controlfileRedolog filesDB에서발생된 변경 작업의 로그정보(Redo data)가 기록된 공간주목적 : Datafile recovery(복구)DB당 최소 2개이상 존재순환형 관리Redo log Group(논리적 구조) : DB당 2개이상Redo log Member(물리적 구조,file) : Redo log Group당 1개이상오라클 권장사항 : Group 3개, Member 2개씩Redolog files 정보조회 : v$log, v$logfileParameter fileInstance의 정의정보가 기록된 공간SGA할당정보, B/G proc정보 등DB의 여러 설정 정보가 기록된 공간위치 : $ORACLE_HOME/dbs이름 : spfileSID.ora 또는 initSID.oraPassword fileDB를 시작/종료할 수 있도록 인증해주는 공간.위치 : $ORACLE_HOME/dbs이름 : orapwSIDOptionalArchived log files- Redo log file의 오프라인 복사본- 주목적 : Datafile Recovery- log mode : Narchive log mode VS Archive log mode 중 선택- log mode 정보 조회 : v$database을 적용할 수 있다.
- 체크포인트 발생시 DBWR에게 알려줌. - DBWR기록 후 datafiles 헤더와 controlfile에 마지막 체크포인트 번호를 갱신함
Database
Database 3대파일
Data files
실제 data가 저장되는 공간 data dictionary가 저장되는 공간 datafile 정보 조회 : v$datafile(영구data), v$tempfile(임시data)
Control file
DB의 무결성 유지/관리할 수 있는 모든 동기화정보가 기록된 공간 DB의 논리적/물리적 구조 정보, 마지막 작업번호 등이 저장 DB당 하나이상 존재 -> 최대8개까지 다중화기능제공 오라클 권장 3개 Control file 정보조회: v$controlfile
Redolog files
DB에서발생된 변경 작업의 로그정보(Redo data)가 기록된 공간 주목적 : Datafile recovery(복구) DB당 최소 2개이상 존재 순환형 관리 Redo log Group(논리적 구조) : DB당 2개이상 Redo log Member(물리적 구조,file) : Redo log Group당 1개이상 오라클 권장사항 : Group 3개, Member 2개씩 Redolog files 정보조회 : v$log, v$logfile
Parameter file
Instance의 정의정보가 기록된 공간 SGA할당정보, B/G proc정보 등 DB의 여러 설정 정보가 기록된 공간 위치 : $ORACLE_HOME/dbs 이름 : spfileSID.ora 또는 initSID.ora
Password file
DB를 시작/종료할 수 있도록 인증해주는 공간. 위치 : $ORACLE_HOME/dbs 이름 : orapwSID
Optional
Archived log files
- Redo log file의 오프라인 복사본 - 주목적 : Datafile Recovery - log mode : Narchive log mode VS Archive log mode 중 선택 - log mode 정보 조회 : v$database
Database| Database 3대파일| Data files| 실제 data가 저장되는 공간
data dictionary가 저장되는 공간
datafile 정보 조회 : v$datafile(영구data), v$tempfile(임시data)
Control file| DB의 무결성 유지/관리할 수 있는 모든 동기화정보가 기록된 공간
DB의 논리적/물리적 구조 정보, 마지막 작업번호 등이 저장
DB당 하나이상 존재 -> 최대8개까지 다중화기능제공
오라클 권장 3개
Control file 정보조회: v$controlfile
Redolog files| DB에서발생된 변경 작업의 로그정보(Redo data)가 기록된 공간
주목적 : Datafile recovery(복구)
DB당 최소 2개이상 존재
순환형 관리
Redo log Group(논리적 구조) : DB당 2개이상
Redo log Member(물리적 구조,file) : Redo log Group당 1개이상
오라클 권장사항 : Group 3개, Member 2개씩
Redolog files 정보조회 : v$log, v$logfile
Parameter file| Instance의 정의정보가 기록된 공간
SGA할당정보, B/G proc정보 등
DB의 여러 설정 정보가 기록된 공간
위치 : $ORACLE_HOME/dbs
이름 : spfileSID.ora 또는 initSID.ora
Password file| DB를 시작/종료할 수 있도록 인증해주는 공간.
위치 : $ORACLE_HOME/dbs
이름 : orapwSID
Optional| Archived log files| \- Redo log file의 오프라인 복사본
\- 주목적 : Datafile Recovery
\- log mode : Narchive log mode VS Archive log mode 중 선택
\- log mode 정보 조회 : v$database
다중화가 많을 수록 안정성, 성능↓ (3개든5개든 다중화 갯수만큼 동시에 기록해야해서 성능떨어짐)
다중화가 적을 수록 안정성↓, 성능
다중화시킬때는 경로를 나눠서 운영해야함. 예를 들어 c드라이브와 d드라이브에 하나씩.
Control file 정보조회 : v$controlfile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
//컨트롤파일 정보 조회 SQL> desc v$controlfile; Name Null? Type -------------------------- -------- --------------- STATUS VARCHAR2(7) NAME VARCHAR2(513) IS_RECOVERY_DEST_FILE VARCHAR2(3) BLOCK_SIZE NUMBER FILE_SIZE_BLKS NUMBER CON_ID NUMBER
SQL> select name from v$controlfile;
NAME ------------------------------------------------------------ /u01/app/oracle/oradata/ORCL/controlfile/o1_mf_fwvn95xm_.ctl /u01/app/oracle/fast_recovery_area/orcl/ORCL/controlfile/o1_ mf_fwvn96cd_.ctl
조회결과를 보면 .ctl컨트롤 파일이 2개이다. 따라서 다중화 개수도 2개이다.
(online) Redo log files
DB에서발생된 변경 작업의 로그정보(Redo data)가 기록된 공간
DB에서발생된 변경 작업이란 DML 후 COMMIT, 오토커밋까지 한 작업
이미 변경작업이 완료된 정보를 왜 로그 남길까? 주목적 : Datafile recovery(복구)
//v$log 조회 SQL> desc v$log; Name Null? Type ---------------------------------- -------- ---------------- GROUP# NUMBER THREAD# NUMBER SEQUENCE# NUMBER BYTES NUMBER BLOCKSIZE NUMBER MEMBERS NUMBER ARCHIVED VARCHAR2(3) STATUS VARCHAR2(16) FIRST_CHANGE# NUMBER FIRST_TIME DATE NEXT_CHANGE# NUMBER NEXT_TIME DATE CON_ID NUMBER
SQL> select group#, members, status from v$log;
GROUP# MEMBERS STATUS ---------- ---------- -------------------------------- 1 2 INACTIVE 2 2 CURRENT 3 2 INACTIVE
//v$logfile조회 SQL> desc v$logfile; Name Null? Type ----------------------------------------- -------- ---------------------------- GROUP# NUMBER STATUS VARCHAR2(7) TYPE VARCHAR2(7) MEMBER VARCHAR2(513) IS_RECOVERY_DEST_FILE VARCHAR2(3) CON_ID NUMBER
SQL> select group#, member from v$logfile order by group#; GROUP# MEMBER ---------- ------------------------------------------------------------ 1 /u01/app/oracle/oradata/ORCL/onlinelog/o1_mf_1_fwvn9ddb_.log 1 /u01/app/oracle/fast_recovery_area/orcl/ORCL/onlinelog/o1_mf _1_fwvn9o6v_.log