Oracle Database Server (Oracle Database) = Database + Database Instance
Database
디스크에 위치한 파일 집합
Database Instance
SGA (System Global Area) + Background Process
데이터베이스 파일을 관리하기 위한 메모리 구조의 집합으로 공유 메모리와 프로세스로 구성
Client Process가 인스턴스에 접속하여 Session이 설정되면 Server Process가 생성됨
Server Process는 공유하지 않는 개별 세션 메모리인 PGA (Program Global Area)를 보유하고 있음
1.2 Database Storage Structures
1.2.1 물리적인 저장구조
데이터베이스 파일 저장 메커니즘
Automatic Storage Management (ASM)
오라클 데이터베이스를 위해 특별히 설계된 파일 및 볼륨(디스크) 관리 시스템
고가의 RAID 장비나 타사 OS볼륨관리 및 파일 시스템 관리를 ASM으로 대체 가능
디스크에 데이터를 분산 기록하여 균일한 성능제공
오라클 엑사데이터 시스에서 사용됨
데이터베이스는 데이터 파일, 컨트롤 파일, 온라인 리두 로그 파일 및 기타 유형의 파일을 ASM에 저장 가능
데이터베이스 파일
데이터파일 (Data Files)
데이터 파일은 데이터베이스의 실제 데이터가 저장되는 물리적인 파일
데이터베이스의 데이터는 각 테이블스페이스의 데이터 파일 집합 형태로 저장 (테이블스페이스는 하나 이상의 데이터 파일로 구성)
데이터 파일에는 테이블, 인덱스와 같은 데이터베이스 구조를 포함하는 데이터 딕셔너리가 저장
v$datafile, v$tempfile 뷰를 사용하여 데이터 파일 정보를 조회
컨트롤 파일 (Control Files)
데이터베이스의 물리적 구조를 저장하는 파일
데이터베이스 이름, 데이터베이스 ID, 데이터 파일, 리두 로그 및 아카이브 파일 정보, 현재 로그 번호, 체크포인트 정보 등을 포함
바이너리 파일이며, CREATE CONTROLFILE 명령어로 생성가능
ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS ‘/home/oracle/trace_cf.txt’; 명령어를 사용하여 텍스트 파일로 변환하여 내용 확인가능
v$controlfile 뷰를 사용하여 컨트롤 파일 정보를 조회
리두로그 파일 (Redo Log Files)
데이터베이스에서 발생한 모든 변경 작업을 기록하는 파일
데이터 복구에 사용
v$log, v$logfile 뷰를 사용하여 조회
장애 대비를 위해 리두 로그 파일은 다중으로 관리됨
리두로그 그룹 : 온라인 리두로그 파일과 복사본으로 구성
멤버 : 리두로그 파일 및 복사본 파일
리두로그 스위치 (redo log switch)
리두 로그 파일이 가득 차면 다음 리두 로그 파일로 전환
리두 로그 스위치가 발생하면 체크포인트(Checkpoint) 프로세스가 시작됨
체크포인트 프로세스가 시작되면 DBWR 프로세스는 데이터베이스 버퍼 캐시에 있는 변경된 데이터 블록들을 데이터 파일에 기록
DBWR (DataBase WRiter)
오라클 데이터베이스의 백그라운드 프로세스 중 하나
데이터베이스 버퍼 캐시(Database Buffer Cache)에서 변경된 데이터 블록을 데이터 파일(Datafile)에 기록하는 역할
체크포인트(Checkpoint)가 발생하면 DBWR은 변경된 데이터 블록을 디스크에 기록하여 데이터 파일과 메모리 간의 동기화를 수행
오라클 데이터베이스에서 일반적으로 권장되는 리두로그 파일 개수는 5개로 1개당 1Gb 정도로 설정 (5개 정도를 유지하면 리두로그 스위치가 자주 발생하더라도 충분한 공간을 확보하여 데이터베이스 성능저하를 방지할 수 있음, 리두로그 스위치 발생 시 다음 리두로그의 CheckPoint 프로세스가 종료되지 않은 상태가 되면 시스템전체가 멈추기 때문에 순환이 되기 전에 CheckPoint가 다 끝나도록 튜닝필요)
리두로그 파일 크기는 트랜잭션 처리량과 복구 요구사항에 따라 조정될 수 있으나 최근에는 1Gb 정도를 설정하는 것이 일반적 (리두로그 파일의 크기가 너무 작으면 리두 로그 스위치가 자주 발생하여 데이터베이스 성능이 저하될 수 있으며, 너무 크면 복구 시간이 오래 걸릴 수 있음)
RAC (Real Application Clusters) 환경에서의 데이터 파일 및 리두 로그 파일 관리
데이터 파일 (Data Files)
RAC 환경에서는 여러 인스턴스가 하나의 데이터베이스를 공유함으로 데이터 파일은 모든 인스턴스에서 공유됨 (즉, 모든 인스턴스가 동일한 데이터 파일에 접근하여 데이터를 읽고 쓸 수 있음)
리두 로그 파일 (Redo Log Files)
각 RAC 인스턴스는 자체적인 리두 로그 파일을 가지고 있으며 이는 각 인스턴스에서 발생하는 변경 사항을 별도로 기록하기 위함
따라서 각 인스턴스별로 고유한 리두 로그 파일이 존재하며, 이 파일들은 공유 저장소에 저장되어야 함 (인스턴스 복구 시 다른 인스턴스에서 접근할 수 있도록 하기 위함)
리두 로그 그룹을 공유하고, redo log file에 쓰는 것은 개별적으로 기록됨
RAC 환경에서의 데이터 안정성 확보
리두 로그 스위치 발생 시 체크포인트 발생과 함께 DBWR(Database Writer)를 통해 기록하여 데이터 안정성을 확보하는 과정은 RAC 환경에서도 동일하게 적용됨
다만, RAC 환경에서는 여러 인스턴스가 동시에 데이터를 변경할 수 있으므로, 데이터의 일관성을 유지하기 위한 추가적인 메커니즘이 필요하며 Cache Fusion 기능을 통해 블록의 일관성을 유지함
1.2.2 논리적인 저장구조
데이터 블록 (Data Block) – 벽돌 한 장
데이터베이스 I/O의 최소 단위 (데이터베이스에서 데이터를 읽거나 쓸 때 가장 작은 단위)
데이터 블록은 OS 블록으로 구성
데이터베이스가 생성될 때 데이터베이스의 블록 크기를 설정 (DB_BLOCK_SIZE)
익스텐트 (Extents) – 벽돌 (데이터 블록) 여러 장을 붙여 만든 작은 벽
논리적으로 연속된 데이터 블록 집합 (여러 개의 데이터 블록이 연속적으로 모여서 하나의 익스텐트를 구성)
익스텐트는 항상 하나의 데이터 파일에 포함
익스텐트는 세그먼트에 공간을 할당하기 위한 단위
세그먼트 (Segements) – 여러 개의 작은 벽 (익스텐트)을 쌓아 만든 건물 (테이블, 인덱스)
테이블 스페이스 내의 논리적 저장 구조 (테이블 스페이스 안에 데이터를 저장하는 논리적인 공간)
테이블/인덱스와 같은 Schema Object에 할당된 익스텐트의 집합 (테이블, 인덱스, LOB와 같은 데이터베이스 객체들이 사용하는 익스텐트들의 모음)
하나 이상의 데이터 파일을 가질 수 있음 (세그먼트는 하나 또는 여러 개의 데이터 파일에 걸쳐서 존재할 수 있음)
반드시 하나의 테이블 스페이스 안에 속함
LOB (Large OBject) 데이터는 별도 세그먼트에 저장 (큰 용량의 LOB 데이터는 일반적으로 테이블 데이터와 분리되어 별도의 세그먼트에 저장됨)
테이블 스페이스 (TableSpaces)
하나 이상의 세그먼트로 구성 (테이블스페이스는 여러 개의 세그먼트를 포함하는 논리적인 저장공간)
데이터베이스는 테이블스페이스라는 논리적 저장 단위를 사용하여 데이터를 관리
테이블스페이스는 실제 데이터를 하나 이상의 데이터파일 또는 임시파일에 저장
각 데이터베이스 사용자는 기본 영구 테이블스페이스 (Permanent Tablespace) 데이터베이스를 할당받음
SYSTEM
SYS 사용자 소유 (오라클 데이터베이스 시스템의 핵심 구성 요소)
Data Dictionary (데이터베이스의 관리 정보 : 테이블, 뷰, 트리거, 프로시저, 패키지 등)를 저장
데이터베이스에 대한 관리 정보가 포함된 테이블 및 뷰
트리거, 프로시저, 패키지 등의 컴파일된 저장 객체
SYSAUX
SYSTEM 테이블스페이스의 보조 테이블스페이스 (SYSTEM 테이블 스페이스의 부담을 줄이기 위해 보조적인 역할을 수행)
UNDO
실행 취소 데이터 저장 (트랜잭션의 실행취소 데이터를 저장)
인스턴스당 한 개 (오라클 데이터베이스 인스턴스마다 하나의 UNDO 테이블스페이스를 가짐)
1.3 Oracle Instance Architecture
1.3.1 데이터베이스 인스턴스
데이터베이스 인스턴스 식별
Oracle Base Directory : 오라클 데이터베이스 설치 소유자의 Home 디렉터리로 SW와 구성 파일 저장 위치
Oracle Home Directory : 오라클 데이터베이스 SW 홈 디렉터리로 Oracle Base 하위 디렉토리
Oracle System Identifier(SID) : Host의 오라클 데이터베이스 인스턴스에 대한 고유 이름
인스턴스 및 데이터베이스 시작 순서
Initialization Parameter Files (초기화 파라미터 파일)
오라클 메모리/인스턴스 설정 (오라클 데이터베이스의 메모리 구조와 인스턴스 설정을 정의하는 파일)
데이터베이스 시작 시 읽기 (데이터베이스가 시작될 때 가장 먼저 읽는 파일)
파일 종류
spfile (binary) : 바이너리 형식의 파일로, RAC (Real Application Clusters)와 같이 여러 노드에서 사용하는 경우에 적합