(1) SQL 문장의 실행 원리
- User Process : 쿼리를 치는 프로그램으로 sqlplus, toad, orange 등이 있다
- Tnsname.ora : 주소록과 같은 개념으로 저장된 정보를 통해 Database를 찾아감 ( IP, PORT, SID 등 저장되있음 )
Oracle Client 를 설치해야 생김. netca 명령어를 실행
- Server Process : 실제 작업을 수행하는 역할 , User Process 로부터 쿼리 내용 전달 받아서 D.B에서 찾음
- Connection : 유저 프로세스와 서버 프로세스가 만나서 쿼리 전달받는 것
- Session : 서버 프로세스가 유저 프로세스로부터 쿼리를 전달 받아 D.B에서 작업을 수행하는 것
과정 설명
- 유저 프로세스에서 쿼리를 작성 -> 1. Tnsname.ora 에 저장된 정보를 확인해 리스너로 이동 -> 2. 리스너에서 D.B 에 있는 서버 프로세스를 호출 -> 3,4 서버 프로세스와 유저프로세스가 만나서 쿼리내용 전달 -> 5. 서버프로세스가 D.B로 가서 작업을 수행해서 결과값 출력
예 ) 유저프로세스 : 면회자 , 리스너 ; 위병 병사 , D.B : 군대 , 서버프로세스 : 당직사관
-> 면회자가 면회할 대상의 정보(쿼리)를 갖고 네비게이션에 주소(Tnsname.ora)를 입력해 군대로 출발 (1번단계) -> 위병소에서 병사(리스너)에게 면회왔다고 면회요청 (2번단계) -> 군대에서 당직에게 면회자 있다고 연락해 호출(3번단계)
-> 당직에게 면회당사자 정보를 전달해줌(connection) (4번단계) -> 당직은 군대에서 면회당사자 정보로 병사찾음 (session)(5번단계) -> 병사 찾아서 면회하러 나감 (출력)
위와 같은 과정을 2번째 부터는 1,2,3 번의 과정을 건너뛰고 Tnsname.ora 에서 바로 Server Process 단계로 가는 A 과정
-> 5번 과정으로 작업 수행 ( DB로 처음 연결하는게 첫번째라고 행함 )
(2) Select 문장의 실행 원리
1. Parse
- Server Process 가 User Process 로부터 SQL 문장을 받아서 SQL Parser 를통해 각 SQL문에 쓰인 키워드나 컬럼명등을 분석해 Parse Tree 라는 것을 생성
- Parse Tree를 만드는 과정에서 문법검사등을 하고 이상이 없으면 의미검사를 한다.
-> 문법검사 단계에서 스펠링이 틀리면 Parse Tree 생성단계에서 오류가 생기게 되고
의미검사 단계에서 잘못되면 Semantic Check 단계에서 에러가 발생
- Dictionary Cache (Row Cache) : 해당 문법이 맞는지 틀린지 여부나 해당 테이블이 있는지 없는지 여부를 알기위해
데이터 딕셔너리를 사용하게 되고 자주 사용하는 데이터 딕셔너리를 캐싱해 두어
성능을 높이는 역할을 하는곳
- 실행계획
- 검사단계를 마치고 실행계획단계로 넘어가는데 Shared Pool 의 Library Cache를 검사해 기존에 사용했던 sql 문장이나 pl/sql 문장이 있으면 soft parse를 실행해 다음단계로 넘어감
- 기존에 사용한적이 없어서 soft parse를 실행하지 못하면 Shared Pool 의 Dictionary Cache를 참조하여 실행계획 생성
- soft parse 를 항상 먼저 실행하고 실패했을 경우에 hard parse를 실행
RBO ( Rule Based Optimizer ) : 서버 프로세스가 실행계획을 세워 달라고 요청이 들어오면 이름대로 미리 정해져 있는 규칙을 사용해 실행 계획을 세움 ( 융통성 없는 방식 )
CBO ( Cost Based Optimizer ) : 규칙을 기반으로 실행계획을 세우되 상황에 맞게 계획세움 ( 대부분이 CBO 사용 )
2. Bind
- 실행 계획을 1개만 생성 한 후 바인드 변수 값을 바꾸어 여러 번 실행하는 것
3. Execute
- Database Buffer Cache 에서 서버프로세스가 원하는 블록이 있는지 검사
- 원하는 블록이 없을시 데이터파일에서 서버프로세스가 원하는 블록을 Databse Buffer Cache 로 복사
4. Fetch
- 복사한 데이터 블록 에서 사용자가 요청한 데이터만 골라내는 과정
>만약 사용자가 정렬(sort) 등의 추가 작업을 요구했을 경우 Fetch 과정에서 sort를 완료한후 PGA 공간으로 데이터 보내서 정렬 발생 ( PGA 공간은 서버 프로세스 별로 각각 독립적으로 할당되어 사용 )
'오라클 > 관리 실무' 카테고리의 다른 글
Oracle 저장구조 (0) | 2014.10.23 |
---|---|
Tablespace 와 Data File 관리하기 (2) | 2014.10.21 |
Redo Log 관리하기 (0) | 2014.10.20 |
Control File 관리하기 (0) | 2014.10.20 |
ORACLE 시작하기 & 종료하기 (0) | 2014.10.20 |
Oracle Background Process (0) | 2014.10.17 |
Oracle Architecture (2) | 2014.10.17 |