오라클 서버의 구조>


1. 프로세스 구조 : 3가지


1) 사용자 프로세스 : 현재 어떤사용자가 어떤 툴로 접속했는지 접속정보 . 접속일자,사용자/암호


2) 서버프로세스(PGA) : 구문분석(parse), 실행(execute), 인출(fetch)


3) 백그라운드 프로세스

DBWR

CKPT

LGWR

PMON

SMON



instance : SGA 3가지 영역 + 백그라운드프로세스 5가지



2. 메모리 구조(SGA영역 )

필수3가지

- Data Buffer Cache

- Redo Log Buffer

- Shared Pool

  ; 캐시영역은 여러개의 블록으로 구성

  ; 각 블록의 크기는 initSID.ora 파일에 지정되어 있는 DB_BLOCK_SIZE 임.

  ; DB_BLOCK_SIZE은 한번 생성한 후에는 수정할수 없음.

  ; 일반적으로 다수의 사용자가 사용하는 시스템(OLTP)인 경우는 빈번한 사용으로 메모리의 조각화를 최소화하기 위해 블록사이즈를 작게 설정하고, DW,DSS같은 소수의 사용자가 다량의 데이터를 사용하는 구조는 블록사이즈를 크게 한다. 


옵션 

-Large Pool




3. 파일 구조

Data files

Control files

Redo log files

Archived log files

Parameter file

Password file

--> 물리적 : files   논리적 : DataBase




[select문 처리과정]

1)구문분석(parse)

- 구문분석. 문법이 맞는지. 존재하는 오브젝트인지. 권한 체크 등 검사--> 실행계획

- 처음 실행되면 Shared pool / Library cache 에 sql문장의 파싱결과를 로드함.

- sql문장과 동일한 문장을 메모리영역의 파싱된 결과와 비교.

- 동일한 문장이 존재하면 바로 사용.( 문장의 구문검사, 실행계획없이 바로 사용)

- 메로리는 한정되어 있으므로 저장할 공간이 없으면 LRU(Least Recently Used list)알고리즘에 의해 가장오래된 공간를 비우고 그 공간을 사용한다.


2) 실행(execute)

- 서버프로세스가 Data files로 부터 읽어서 Data Buffer Cache에 로드하는 행위


3) 인출(Fetch)

- Data Buffer cache영역에 로드되어 있는 정보를 읽어서 사용자화면에 보여주는 행위

( update, delete, insert는 fetch행위하지 않음. )



parsing할때 

select * from dept where deptn =:a

문장은 재사용이 가능한 정적인 SQL이다. 

그러나,

SQL ="SELECT * FROM DEPT WHERE DEPTNO ='" & v_dept & "'" 

이런식으로 사용하면 재사용이 불가능하다. 실행할때마다 구문검사, 실행계획을 수행하기 때문에 문제가 될수 있다.






'DBMS > 오라클기타' 카테고리의 다른 글

테이블 정보 query  (0) 2013.06.06
trigger  (0) 2013.06.04
오라클 EXPORT  (0) 2013.05.17
오라클 IMPORT  (0) 2013.05.17
Cluster  (0) 2013.05.12

+ Recent posts