시작점
- 데이터베이스 시스템 문제를 스스로 해결할 수 있도록 오라클 메커니즘을 충분히 설명한다.
- 문제 발생을 인지하기 위해 이해해야 할 오라클의 핵심 메커니즘은 몇개 안되며, 이 책은 그것을 반복적으로 점차 상세하게 설명 한다.
오라클 주요 프로세스들
구분 | 데이터 파일 | 리두 로그 파일 |
---|
내용 | 실제 데이터 | 데이터 파일에 발생된 모든 변경 사항 |
I/O 방식 | Random | Sequential |
I/O 크기 | 8K(블록 크기) | 512B(최소 유닛 크기) |
목적 | 테이블스페이스 | ONLINE/ARCHIVED 리두 로그 |
이름 | 설명 |
SYSTEM | 데이터베이스를 설명하는 메타데이터(DATA DICTIONARY) 저장 |
SYSAUX | 내부/유지 관리용 패키지에 의해 생성된 다양한 데이터 저장, Oracle 10g 에서 소개 됨 |
UNDO | Oracle 9i 에서 소개 됨 |
TEMP | Oracle 8 에서 소개 됨 |
- 데이터베이스 : 데이터 파일 집합
- 인스턴스 : 프로세스(스레드) 와 SGA 의 조합
- RAC는 동일한 데이터베이스를 공유하는 독립된 인스턴스를 가진 다수의 장비로 구성
- SGA(System Global Area)
- 데이터 캐시 : 데이터 블록들의 일부 복사본을 보유
- 로그 버퍼 : 로그 파일로 기록될 정보를 위해 순환적인 방식으로 사용되는 작은 영역
- 라이브러리 캐시 : SQL문, PL/SQL블록 정보 보유
- SCN(System Change Number) : 인스턴스 활동성을 조정하는 Clock
- SGA 를 액세스 하는 모든 프로세스는 SCN 읽기/ 수정 가능
- 트랜잭션 시작 시 현재 값 읽기(kcmgss - Get Snapshopt SCN)
- 트랜잭션 커밋 시 현재 값 증가(kcmgas - Get and Advance SCN)
- 프로세스
- LGWR (Log Writer) : [로그 버퍼] → [로그 파일] 정보 복사 프로세스 (1개)
- DBWR (Database Writer) : [데이터 캐시] → [데이터 파일] 정보 복사 프로세스 (1개 이상)
- 서버 프로세스 : SGA 조작, 데이터 파일 읽음
- DEDICATED 서버 프로세스 : 대부분 시스템 선택
- SHARED 서버 프로세스 : 일부 시스템에서 OLTP 용으로 선택
동시성 관점에서의 오라클
오라클 동작 원리
사용자 프로그램은 SQL(PL/SQL)문을 서버 프로세스에 전송한다.
각 문장은 파싱 단계를 거친 후에 실행된다.
서버 프로세스는 읽기 일관성을 가지고, 정확한 데이터를 획득/수정해야 한다.
인스턴스는 장애로부터 데이터베이스를 보호.
- 위의 동작은 멀티 유저 시스템에서 발생 하므로 아래 내용 고려 필요
- 효과적인 데이터 엑세스, 변경 방법?
- 데이터베이스 보호 방법?
- 다른 사용자의 간섭 최소화?
- 문제 발생시 원복 방법?