[ 접속 과정 ]
1. client 서비스 요청
2. 리스너 서비스 확인/수락
3. 서버 프로세스 할당(수락한 요청에 대해)
user process <----> server process
단말기 dbms 내 존재
orange v$process 뷰를 통해 조회 가능
sqlplus ps로 조회 가능
[ 명령어 전달 과정 ]
1. client 요청
2. 서버 프로세스 할당
3. sql 문장 체크(parse)
1) 문법체크(syntax check)
2) 구조체크(semantic check)
- 객체 정보(테이블, 뷰, 컬럼) 확인
- shared pool의 Data Dictionary cache에 저장 ( 다른 사용자가 사용할 때 빠르게 사용하기 위해 )
4. 실행 계획 작성(optimizer 계획 수립)
- 최초 sql 실행 시 실행 계획을 cost 기반으로 작성
- shared pool의 Library cache에 저장 ( 저장이 많이 될수록 부하가 없이 빠르게 진행됨 )
Library cache hit ratio 로 체크
** soft parsing : 이미 저장된 실행계획 재사용
hard parsing : 처음부터 다시 실행계획 수립
** hard parsing 발생 케이스
1) 처음 수행되는 SQL
2) 오래된 SQL
3) DB restart 후
4) literal SQL : 변수처리되지 않고 상수가 직접 전달되는 형태의 sql
ex)
select sal + comm from emp where empno = 7788;
select sal + comm from emp where empno = 7799;
=> 검색조건에 상수가 그대로 노출되는 경우 상수값이 다르면 다른 SQL로 판단,
각각 hard parsing 유발
select sal + comm from emp where empno = : emp_id;
5) 표준에 맞지 않는 SQL
ex)
select sal + comm from emp where empno = 7788;
select sal + comm
from emp
where empno = 7788;
=> 일반적으로 띄어쓰기, 내려쓰기, 대소문자 정확히 같을 경우 같은 SQL로 판단
oracle server = instance(memory) + database(disk)
[ instance 구조 ]
- instance = SGA + 백그라운드 프로세스
- SGA(System Global Area) 또는 shared global area 라고 부르기도 하지만 system이 정식 명칭
: 모든 서버 프로세스들이 공유하고 있는 메모리 영역
** SGA = Shared Pool + DB Buffer cache + Redolog buffer cache
[ database 구조 ]
1) data file : 실제 데이터가 저장되는 디스크 영역
2) control file : DB 구조에 대한 정보를 가지고 있는 영역
3) redo log file : 모든 변경 내용을 기록하는 디스크 영역(복구)
[ SGA(System Global Area) ]
- 프로세스들이 함께 사용하는 공유 메모리 영역
- 동적 변경 가능(spfile 환경일때 가능)
oracle 홈 밑에 dbs 디렉토리에 initSID.ora / spfileSID.ora 가 있다.
init : 정적 파라미터 파일
spfile : 동적 파라미터 파일
둘다 있으면 spfile이 우선순위이다.
[ Shared Pool ]
- SQL 문장 수행 결과를 저장하는 메모리 공간
- library cache + Dictionary cache 영역으로 구성
1) library cache : 실행계획을 저장
2) Dictionary cache : 객체 정보를 저장
- 동적 변경 가능(DB운영중에 변경 가능)
- 수동으로 사이즈 변경 가능하지만 자동으로 관리(ASMM) Automatic Shared Memory Management
[실습]
1. 할당된 shared pool size 조회 방법
1) parameter file 확인
(instance 기동과 관련된 파라미터 정보를 가지고 있는 설정 파일)
$ vi $ORACLE_HOME/dbs/initSID.ora
$ vi $ORACLE_HOME/dbs/spfileSID.ora <- binary file이므로 열지않는것이 좋음
파라미터가 위치한 디렉토리
에서
spfiledb1.ora 가 없으면 db는 올라가지 않는다. 그러므로 함부러 저 파일의 이름 또는 위치를 변경해선 안된다.
만약 저 위치나 이름을 변경하면
다음과 같은 오류 발생
2) SQL prompt 확인
SQL> show parameter shared_pool_size => orange 에서 수행불가능 / SQL PLUS에서 실행해야함
VALUE 0 <- ASMM(메모리 자동관리) 사용중
3) v$parameter
결과는
값이 0이라는말은 ASMM 사용중
2. 실시간 shared pool size 조회
결과는
[ hit ratio(적중률) 조회 ]
1. library cache hit ratio 조회
2. Dictionary cache hit ratio 조회
'Oracle' 카테고리의 다른 글
5. Redo log Buffer (0) | 2024.11.22 |
---|---|
4. Database Buffer Cache (0) | 2024.11.22 |
2. 환경 설정과 DB 기동과 중지 (0) | 2024.11.21 |
1. Oracle 리눅스 설치 + Oracle 12c 설치 (0) | 2024.11.20 |