* SELECT 문의 처리 과정
1) parsing
   - SQL문장을 기계어로 바꾸는 과정
     1. 문법검사
        - 맞는 문법인지 검사
     2. 의미검사
        - emp테이블이 있는지 확인, scott가 emp 테이블의 액세스할수 있는 권한이 있는지 확인
- parsing의 경우 CPU를 많이 사용하기 때문에 파싱한 결과를 공유풀(shared pool)에 올려두게 됨.
   - 공유풀에 올리는사항  => 다음에 똑같은것이 오면 파싱과정을 생략하기 위해서
    1. SQL문장
    2. 실행계획
    3. Parse Tree(기계어)
2) execute
   메모리에 로드 처리 실행
3) fetch
   SQL결과를 클라이언트에서 전달하는 과정
# 쿼리 실행후 실제 공유 메모리에 해당 쿼리문이 올라 갔는지 확인 하기
C:\>sqlplus "/as sysdba"
SQL*Plus: Release 10.2.0.3.0 - Production on 수 3월 16 18:55:24 2011
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
다음에 접속됨:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> select ename, sal from scott.emp where empno=7788;
ENAME             SAL
---------- ----------
SCOTT            3000
SQL> -- shared pool에 있는 SQL문장 확인
SQL> select sql_text from v$sql where sql_text like '%scott.emp%';
SQL_TEXT
--------------------------------------------------------------------------------
select  ename, sal from scott.emp where empno=7788
select sql_text from v$sql where sql_text like '%scott.emp%'
SQL>
# SQL에서 똑같은 문장이란?
  1. 대소문자구분
  2. 공백, 들여쓰기, 탭구분
  3. 리터럴 SQL구문 => 바인드 변수 처리
# 대소문자구분을 하였을경우 공유메모리에 2개가 존재하는것 확인
C:\>sqlplus "/as sysdba"
SQL*Plus: Release 10.2.0.3.0 - Production on 수 3월 16 18:55:24 2011
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
다음에 접속됨:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> select ename, sal from scott.emp where empno=7788;
ENAME             SAL
---------- ----------
SCOTT            3000
SQL> -- shared pool에 있는 SQL문장 확인
SQL> select sql_text from v$sql where sql_text like '%scott.emp%';
SQL_TEXT
--------------------------------------------------------------------------------
select  ename, sal from scott.emp where empno=7788
select sql_text from v$sql where sql_text like '%scott.emp%'
SQL> -- 대문자로 해당쿼리문을 실행시
SQL> SELECT ENAME, SAL FROM scott.emp WHERE EMPNO=7788;
ENAME             SAL
---------- ----------
SCOTT            3000
SQL>  -- shared pool에 있는 SQL문장 확인
SQL>  select sql_text from v$sql where sql_text like '%scott.emp%';
SQL_TEXT
--------------------------------------------------------------------------------
select  ename, sal from scott.emp where empno=7788
select sql_text from v$sql where sql_text like '%scott.emp%'
 select sql_text from v$sql where sql_text like '%scott.emp%'
SELECT ENAME, SAL FROM scott.emp WHERE EMPNO=7788
SQL>
SQL> -- 공백을 많이 띄워서 실행시
SQL> select  ename,                   sal from scott.emp where empno=7788;
ENAME             SAL
---------- ----------
SCOTT            3000
SQL>  -- shared pool에 있는 SQL문장 확인
SQL>  select sql_text from v$sql where sql_text like '%scott.emp%';
SQL_TEXT
--------------------------------------------------------------------------------
select  ename, sal from scott.emp where empno=7788
select sql_text from v$sql where sql_text like '%scott.emp%'
 select sql_text from v$sql where sql_text like '%scott.emp%'
SELECT ENAME, SAL FROM scott.emp WHERE EMPNO=7788
select  ename,                   sal from scott.emp where empno=7788
SQL>
SQL> -- where조건절의 값을 바꿨을경우
SQL> select  ename, sal from scott.emp where empno=7902;
ENAME             SAL
---------- ----------
FORD             3000
SQL>  -- shared pool에 있는 SQL문장 확인
SQL>  select sql_text from v$sql where sql_text like '%scott.emp%';
SQL_TEXT
-------------------------------------------------------------------------------
select  ename, sal from scott.emp where empno=7788
select sql_text from v$sql where sql_text like '%scott.emp%'
 select sql_text from v$sql where sql_text like '%scott.emp%'
SELECT ENAME, SAL FROM scott.emp WHERE EMPNO=7788
select  ename, sal from scott.emp where empno=7902
select  ename,                   sal from scott.emp where empno=7788
6 개의 행이 선택되었습니다.
SQL>
 









