Oracle 29일차

DB 기동과 중지

기동

nomount(started) -> mount -> open

기동 상태 확인

> select status from v$instance;

기동 방법

> startup [옵션]

** 옵션
nomoount : Instance 만 기동된 상태
mount : Database 기동을 위해 controll files를 읽은 상태
open (default)

** 이미 한 번 중간 단계로 startup을 한 이후에는 startup 불가
alter database 명령어로 다음 단계로 넘어가야 함
> startup nomount
> alter database mount;
> alter database open;

중단

> shutdown [옵션]

** 옵션
normal : 모든 사용자의 접속이 끊길 때까지 대기 후 종료. 현업에서 사용하지 않음

transactional : 현재 진행 중인 transaction이 종료될 때까지 대기 후 종료. 현업에서 사용하지 않음

immediate : 현재 실행 중인 작업을 정상 종료하고 DB shutdown 하는 과정. 자주 사용. dirty buffer 에 있는 것들을 모두 디스크에 내리고 종료한다.

abort : 현재 실행 중인 작업을 강제 종료하고 DB shutdown 하는 과정. 현업에서 가끔 사용. dirty buffer에 있는 것들을 디스크에 내리지않고 종료한다. 대신 다음 startup 때 디스크에 저장하는 과정(instance recovery)을 갖는다. 하지만 만약 dirty buffer 내용 저장된 파일이 손상되면 startup이 되지 않는 장애가 발생할 수 있다. 그래서 왠만하면 immediate 옵션을 사용한다.

접속 과정

  1. client 서비스 요청
  2. 리스너 서비스 확인/수락
  3. 서버 프로세스 할당(수락한 요청에 대해)

명령어 전달 과정

1. client 요청

2. 서버 프로세스 할당

3. sql 문장 체크 (parse)
1) 문법체크(syntac check)
2) 구조체크(sementic check)
– 객체 정보(테이블, 뷰, 컬럼) 확인
– shared pool의 Data Dictionary cache에 저장

4. 실행 계획 작성(optimizer 계획 수립)
– 최초 sql 실행 시 실행 계획을 cost 기반으로 작성
– shared pool의 Library cache에 저장

** 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;
select sal + comm
from emp
where empno=7788;
-> 일반적으로 띄어쓰기, 내려쓰기, 대소문자 정확히 같을 경우 같은 SQL로 판단

[Instance 구조]

SGA + 백그라운드 프로세스
SGA(System Global Area) : 모든 서버 프로세스들이 공유하고 있는 메모리 영역

** SGA = Shared pool + DB buffer cache + redo log buffer cache

[database 구조]

1) data file : 실제 데이터가 저장되는 디스크 영역
2) control file : DB 구조에 대한 정보를 가지고 있는 영역
3) redo log file : 모든 변경 내용을 기록하는 디스크 영역(복구)

Leave a Comment