DB 기동
close -> nomount -> mount -> open
nomount로 갈 때 parameter file을 읽음.
parameter file에는 control file의 경로가 저장되어 있음.
mount로 갈 때 control file을 읽음.
control file에는 data file과 redo log file의 경로가 저장되어 있음.
open으로 갈 때 data file, redo log file을 읽음.
Oracle Server = Instance + DB
Instance = SGA + background process
SGA = DB buffer cache, redo log buffer, Shared pool 등
background process = DBWR, LGWR, PMON, SMON 등
SGA (system global area)
서버 프로세스들이 공유하는 메모리 공간.
parameter file에 SGA 구성 정보가 담겨있음.
동적변경 가능(SPFILE), 자동관리 가능(ASMM).
** Shared pool
동적 변경 가능, 자동으로 관리(ASMM)
1) library cache : 실행 계획을 저장하는 공간
2) dictionary cache : SQL 수행에 필요한 객체 정보를 저장하는 공간
** DB buffer cache
모든 SQL 실행 결과를 저장하는 메모리 공간.
Instance의 모든 공간 중에서 가장 사이즈가 크다.
사용자가 필요로 하는 데이터를 디스크에서 불러와서 저장해놓고 재사용함.
– physical read : 최초 실행되는 SQL의 경우, 해당 데이터를 디스크(data file)에서 직접 읽어오는 것.
– logical read : DB buffer cache(메모리)에 사용자가 원하는 데이터가 남아있을 때 재사용하는 것.
1) pinned buffer : 디스크로부터 데이터를 조회(select)만 한 경우, 메모리 공간에 올려두고 사용 중인 상태.
2) dirty buffer : 데이터 변경이 발생하였고 commit이 찍혀있는 block을 의미.
3) free buffer : dirty buffer가 DBWR에 의해 디스크(datafile)에 내려써져 사용 가능한 공간인 상태. 또는 아예 사용되지 않은 공간.
** redo log buffer
dbms 내 모든 변경 내용을 기록하는 메모리 영역.
LGWR에 의해 redo log file에 기록됨.
장애 시 이전 데이터나 commit을 완료한 데이터를 토대로 복구를 하기 위한 영역.
redo log buffer 크기는 동적으로 변경 불가.
– archive log mode : redo log file이 덮어쓰여지기 전에 archive log file로 복사해둔 뒤에 덮어쓰는 모드.
** large pool
대용량의 임시 메모리 영역의 할당이 필요한 경우 사용.
병렬 작업(parallel), RMAN 사용 시.
** Java pool
Oracle에서 Java 사용 시 필요한 메모리 영역.
** Streams pool
Migration 시 사용하는 영역.
CDC 솔루션 사용 시 필수.
background process
** DBWR
DB buffer cache에 있는 dirty buffer를 datafile에 기록하는 프로세스.
– 동작 시점
1) dirty buffer 양이 임계값을 지나면
2) session timeout 발생 시
3) checkpoint 발생 시
4) tablespace offline
5) tablespace begin backup
6) tablespace read only
7) drop / truncate table
8) RAC pint(RAC 상황에서의 동기화)
** LGWR
redo log buffer에 있는 내용을 redo log file에 기록하는 프로세스.
모든 변경 내용을 redo log buffer에 기록했다가 commit 수행 시 LGWR가 동작.
– 동작 시점
1) commit 수행 시
2) DBWR 동작 전에 먼저
3) 매 3초마다
4) redo log buffer의 1/3 초과 시
5) 변경량이 1MB 초과 시
** PMON
server process를 생성/관리.
server process가 비정상 종료됐을 경우(=session timeout) commit된 데이터를 저장, 그렇지 않은 데이터를 rollback함.
PMON이 DBWR에 해당 데이터의 동기화 명령.
** SMON
DB 비정상 종료 시 instance recovery 수행.
mount -> open 과정에서 작동함.
SCN(system change number) 정보가 일치하지 않을 때 instance recovery 하면 SCN 정보가 일치됨.
instance recovery 시 필요한 정보가 redo log file에 없다면 실패하고 need media recovery 메세지 뜸.
** CKPT (checkpoint)
checkpoint event가 발생하는 것을 DBWR에게 알리는 프로세스.
checkpoint 정보에는 SCN, 위치, 내용 등을 저장.
instance recovery
shutdown abort 등의 비정상 DB 종료 시 수행되는 복구의 형태.
SMON background process가 담당.
startup 시 진행(mount 단계에서) control files, data files, redo log files의 SCN 정보 확인 & 일치시키는 작업.
** 과정
1) DB 비정상 중단 시 redo log buffer 의 내용 -> redo log file 에 기록
2) startup 시 control file, data file, redo log file의 SCN 정보 확인
3) SCN 정보가 일치하지 않으면 해당 정보를 redo log file에서 찾아서 복구 진행
commit 된 정보 위주로 먼저 시점 일치 작업 진행 (roll forward)
4) DB 정상 OPEN
5) rollback 할 SCN 정보를 정리(roll backward)
DB backup
offline backup = cold backup
0. (parameterfile backup)
1. DB shutdown immediate
2. controlfile, datafile, redo log file 복사(cp)
online backup = hot backup
0.