- 정보 시스템으로의 통합된 접근을 가능하게 하는 데이터베이스 관리 시스템
- Oracle Instance와 Oracle Database로 구성된다.
Oracle Server=DBMS(=Program)
- Instance
- Database
Oracle 구동 방법
SQL> startup (=오라클 서버 기동)
■ 구동 순서
no mount 단계 => Parameter File Check (물리적인 Disk에서 확인한다.)
(Instance 생성)
(1). SGA_MAX_SIZE=1G일 때 오라클이 구동하면서 SGA(System Global Area)에 할당된다.
(1.1) SGA는 거대한 공간이다.
(1.2) SGA 내부에는 Shared pool, Database Buffer Cache, Log Buffer이 기본적으로 생성된다.
(1.3) Shared pool은 library Cache, Data Dictionary Cache로 구분된다.
(2). SGA_TARGET (동적개념)
(3). SHARED_POOL_SIZE
(4). DB_CACHE_SIZE
(5). LOG_BUFFER
(6). No mount 상태에서 Control File을 재 생성할 수 있다
mount 단계 => Control_files 확인
(1). Data File, Redo log 상태 확인
(2). 오라클 디스크와 데이터의 정합성을 유지하기 위한 정보를 Control File에 담는다.
(3) Mount 상태는 Control File은 읽었지만 Data File, Redo log에 문제가 생겨서 Open이 안되는 경우도 있다.
open 단계 => File 간의 동기화 체크
(1). Control File, Data File, Redo log 파일들의 동기화 시점을 Check
(2). File 간의 동기화를 Check하고 정상이면 메모리를 통해서 데이터 파일을 Access를 할 수 있다.
-> 데이터의 동기화는 SCN(System Change Number)을 통해서 확인한다.
-> commit을 할 때마다 일률적으로 증가하게 된다.
-> Control File의 SCN, Data File Header에도 SCN값이 있고 Redo log도 commit을 할 때마다 SCN값이 증가한다.
■ select문의 처리 순서
(1). Parse
(1.1) 동일한 문장이 Library Cache에 존재하는지 확인한다.
(1.2) 동일한 문장이 존재하면 기존 공간을 사용, 존재하지 않으면 새롭게 공간을 확보한다.
(1.3) 문법 검사, Schma검사, 권한 검사
(1.4) 실행 계획 생성 (Optimizer)
(2). Bind
(2.1) Bind Variable을 사용하는 경우
(3). Execute
(3.1) 찾고자 하는 Block이 Database Buffer Cache에 존재하는지 확인
(3.2) 존재하면 그냥 사용, 존재하지 않으면 Data File로부터 메모리로 Load
(3.3) 서버 프로세스에 의한 데이터 처리
(4). Fetch
(4.1) 실행단계에서 가져온 Disk Block에서 필요한 데이터만 추출하는 작업