본문 바로가기

Oracle DataBase/Admin

오라클 기본 구조( 요약 )

disk - database(디스크쪽)
메모리 : Instance

instance - > sga, 백그라운드 프로세스

 

★ select문 실행 할경우 생기는 과정 ★

 

db서버에 접속을 하기위해서는 oracle client tnsname.ora

셋팅을 해야지 많이 서버쪽에 접근 가능
select * from emp
where empno = 100

           ↓        User Process 가 만들어짐
↓↓↓↓↓↓↓ -> oracle client 프로그램이 있음 user process와 tnsname.ora 가 생김
tnsname.ora(db명,ip,port) 파일을 보고 서버를 찾아갑니다.

 

담당자가 나옴(listener) <--> 서버프로세스

모든 sql은 서버프로세스가 모두 함. sql 전달해주는역할 user 프로세스


listenr 와 db 와 별도의 프로그램

 

listener 고장일경우 db에 접근을 못함

tnsping 사용할경우 listener 응답이 오는지 안오는지확인 가능

첫번쨰 쿼리는 listener 통해서 서버프로세스로 연결됨
2번쨰 쿼리는 바로 서버프로세스로 연결됨

사용자프로세스가 종료가 되고난후에 listener 통하고 서버프로세스로 거쳐감


SQL 처리 단계

 

실행계획을 하기위해 parse를 함
1단계 parse(구문분석) ->

검사(문법검사,의미검사,권한검사) ->

 

계획(옵티마이저)hard parse
sql을 날린후에 검사 한후 L.C soft parse(소프트 파싱) 후 실행저장공간에 SQL 문이 없을경우
hard parse( 하드 파싱 )을(를) 하게됨 D.C에 가서 요청함 (시간 무지걸림)

검사 - 문법검사(키워드검사,select,from 등),의미검사(권한,테이블이름,컬럼검사)

 

SGA
Oracel Server가 시작될떄마다 시스템 전영 영역(SGA)이 메모리에 할당 된다 시작할때마다 할당이 됨, SGA의 데이터는 여러 사용자간에 공유가 가능

 

 

 

shared pool은 공유 SQL영역과 Data


Dictionary Cache 구조를 갖고 있는 SGA의 일부분이다.

공유 SQL영역은 SQL문장 하나를 실행하는데에 이용된 정보를 갖고 있으며, 동일한 SQL문장을 실행하는 프로세스들간에 정보를 공유할수 있다.

 


L.C (실행계획을 저장해두는 공간)
D.C (딕셔너리 저장공간)


2단계 execute(실행)


데이터 버퍼 캐시에 내가찾는 데이터가있는지 확인, 있으면 다음단계넘어감
데이터가 없을경우에 file에 필요한 블락을 데이터 버퍼캐시로 복사를 하게됨

 

3단계 BIND ( 바인드 변수 있는지 여부 확인 )

 

4단계 Fetch ( 결과 )

file 에서 emp 테이블을 데이터버퍼캐시로 가져간다음 해당 자료들이 조회되어있는대
거기서 해당 조건 empno 100 을 추출하라는것 인출하는 과정이다.

 

데이터 버퍼 캐시란?

디스크에서 읽은 데이터 블록의 복사본을 가지고 있다. 동시 접속된 사용자들은 데이터버퍼캐시를

공유하여 Access 한다.

 

캐시실패?( Cache Miss )

데이터를 처음 Access 하는 것이라면 서버 프로세스는 디스크로부터 데이터를 읽어서 캐시에 올린다
 

캐시적중? ( Cache Hit )

데이터의 Access할 때 이미 캐시에 있다면 메모리( 케시 ) 에서 직접 데이터를 읽는다

 

캐시적중율 ( Hit Ratio ) 를 높이는 것은 중요한 Tuning Point 이다.

 

Hit Ratio를 85%~90% 정도로 유지하는것이 좋다~

 

LRU ( Least Recently Used ) 알고리즘으로 운영된다.

 자주 사용되는 데이터를 메모리에 올려 야 할 경우가 생길때에 DIsk안에 한동안 쓰지않는 블럭을 내린다.

 

'Oracle DataBase > Admin' 카테고리의 다른 글

Undo 설명  (0) 2012.06.08
SQL문 처리 과정  (0) 2012.06.08
startup && shutdown  (0) 2012.06.08
데이터베이스 시작과 종료  (0) 2012.06.08
데이터베이스 서버 구조  (0) 2012.06.08