복구 시작 시점의 SCN 기록: CKPT는 데이터베이스 복구 시 필요한 시작 시점의 SCN(System Change Number) 기록 (SCN은 데이터베이스의 변경 사항을 식별하는 고유한 번호)
체크포인트 유형:
전체 체크포인트(Full): 컨트롤 파일(Control file)과 데이터 파일 헤더(Datafile header)에 체크포인트 정보 기록
증분 체크포인트(Incremental): 컨트롤 파일에만 체크포인트 정보를 기록
작동 방식
CKPT 프로세스: CKPT 백그라운드 프로세스는 주기적으로 또는 특정 이벤트 발생 시 체크포인트 수행
컨트롤 파일 및 데이터 파일 업데이트: 체크포인트가 발생하면 CKPT는 컨트롤 파일과 데이터 파일 헤더에 체크포인트 정보 기록
데이터 파일 동기화: 체크포인트 발생 시 DBWR(Database Writer) 프로세스는 데이터 버퍼 캐시의 변경된 데이터 블록을 데이터 파일에 기록하여 데이터 파일과 메모리 동기화
중요성
데이터 복구 시간 단축: 체크포인트는 데이터베이스 복구 시 필요한 시작 시점을 제공하여 복구 시간 단축
데이터 일관성 유지: 체크포인트는 데이터 파일과 메모리의 동기화를 통해 데이터 일관성 유지
데이터 손실 방지: 체크포인트는 데이터베이스 장애 발생 시 손실되는 데이터의 양 최소화
3.2 Backup & Recovery
3.2.1 백업 및 복구 솔루션 종류
Logical Methods (논리적 방법)
Export and Import:
데이터베이스 객체(테이블, 뷰 등)를 논리적인 파일로 추출하고 다시 데이터베이스에 로드하는 방식
데이터베이스 전체 또는 일부를 백업 및 복구하는 데 사용할 수 있음
데이터베이스 버전 간 호환성이 높음
Data Pump (10g 이상):
Export and Import의 성능을 향상시킨 유틸리티
대용량 데이터베이스의 백업 및 복구에 효율적
병렬 처리 및 압축 기능을 지원
Flashback Functions (10g 이상):
특정 시점의 데이터로 데이터베이스를 복원하는 기능
사용자 실수로 인한 데이터 손실 시 유용
Flashback Query, Flashback Table, Flashback Database 등 다양한 기능이 있음
Physical Methods (물리적 방법)
O/S Backup and Restore:
운영 체제 명령어를 사용하여 데이터 파일, 컨트롤 파일, 리두 로그 파일 등을 백업하고 복구하는 방식
데이터베이스 전체를 백업 및 복구하는 데 사용
데이터베이스 구조를 그대로 복원할 수 있음
RMAN Backup and Restore:
오라클에서 제공하는 백업 및 복구 유틸리티
데이터베이스 전체 또는 일부를 백업 및 복구하는 데 사용
증분 백업, 압축, 암호화 등 다양한 기능을 지원
High Availability Methods (고가용성 방법)
Data Guard (Data HA):
운영 데이터베이스의 변경 사항을 대기 데이터베이스에 실시간으로 동기화하여 데이터 고가용성 제공
재해 복구(DR) 사이트를 구축하는 데 사용
Active Data Guard 옵션을 사용하면 대기 데이터베이스에서 읽기 전용 작업을 수행할 수 있음
RAC (O/S, Server HA):
여러 서버를 클러스터로 구성하여 서버 고가용성 제공
특정 서버에 장애가 발생해도 다른 서버가 서비스를 계속 제공
로드 밸런싱 기능을 통해 성능을 향상할 수 있음
방법
특징
장점
단점
논리적 방법
데이터베이스 객체 단위 백업/복구
데이터베이스 버전 간 호환성 높음
물리적 방법에 비해 복구 시간 오래 걸림
물리적 방법
데이터베이스 전체 백업/복구
데이터베이스 구조 그대로 복원 가능
데이터베이스 버전 간 호환성 낮음
고가용성 방
서비스 연속성 보장
다운타임 최소화
구축 및 관리 복잡
3.2.2 오프라인 모드 사용자 백업 절차
백업 대상 확인: 아래 뷰를 조회하여 백업해야 할 파일 목록 확인
V$DATAFILE 또는 DBA_DATA_FILES: 데이터 파일 정보
V$LOGFILE: 리두 로그 파일 정보
V$CONTROLFILE: 컨트롤 파일 정보
V$PARAMETER: 초기화 파라미터 파일 정보
데이터베이스 종료: 모든 인스턴스를 Shutdown immediate 명령어를 사용하여 종료
파일 복사: 운영 체제 명령어를 사용하여 백업 위치에 대상 파일을 복사
오프라인 모드 백업의 특징
단순함: 운영 체제 명령어를 사용하여 간단하게 백업 수행
전체 백업: 데이터베이스 전체를 백업
다운타임 발생: 데이터베이스를 종료해야 하므로 다운타임 발생
데이터 일관성 보장: 데이터베이스가 종료된 상태에서 백업하므로 데이터 일관성 보장
복구 시간 오래 걸림: 백업된 파일들을 수동으로 복사해야 하므로 복구 시간이 오래 걸릴 수 있음
장점
단점
단순하고 구현이 쉽다
다운타임이 발생한다
데이터 일관성이 보장된다
복구 시간이 오래 걸린다
전체 백업이 가능하다
백업 및 복구 과정이 수동적이다
3.2.3 온라인 백업 모드
온라인 백업 모드 변경 방법
단일 명령: ALTER DATABASE BEGIN BACKUP; 명령어를 사용하여 전체 데이터베이스를 백업 모드로 변경
테이블스페이스 단위 명령 불필요 (10g 이상): 이전 버전에서는 각 테이블스페이스별로 백업 모드를 설정해야 했지만, 10g 이상부터는 단일 명령으로 전체 데이터베이스를 설정 가능
온라인 백업 모드 조건
ARCHIVELOG 모드: 데이터베이스가 ARCHIVELOG 모드로 설정되어 있어야 함
Mounted and open: 데이터베이스가 마운트 되고 열려 있어야 함
RMAN과의 관계
RMAN은 온라인 백업 모드 불필요: RMAN(Recovery Manager)은 자체적으로 온라인 백업 기능을 지원하므로, 데이터베이스를 명시적으로 온라인 백업 모드로 설정할 필요가 없음
온라인 백업 모드 제한 사항
다음 작업 수행 불가:
Normal Shutdown: 데이터베이스를 정상적으로 종료할 수 없음
Tablespace read-only & online backup mode: 테이블스페이스를 읽기 전용으로 설정하고 온라인 백업 모드를 동시에 사용할 수 없음
Tablespace offline: 테이블스페이스를 오프라인으로 설정할 수 없음
온라인 백업 모드의 장점
다운타임 최소화: 데이터베이스를 중단하지 않고 백업을 수행할 수 있음
24시간 서비스 가능: 서비스 중단 없이 백업을 수행해야 하는 시스템에 적합
온라인 백업 모드의 단점
복잡성: 오프라인 백업에 비해 설정 및 관리가 복잡함
로그 관리 필요: ARCHIVELOG 모드가 필요하며, 아카이브 로그 파일 관리 필요
3.2.4 Instance Recovery (인스턴스 복구)
인스턴스 복구 단계
인스턴스 시작 (데이터 파일 비동기화): 인스턴스가 시작되면 데이터 파일은 메모리(SGA)와 동기화되지 않은 상태
REDO (롤 포워드): 리두 로그 파일을 사용하여 데이터 파일에 기록되지 않은 커밋된 트랜잭션을 적용, 이 과정을 롤 포워드라고 부름
파일에 커밋/미커밋 데이터 포함: 롤 포워드 후 데이터 파일에는 커밋된 데이터와 아직 커밋되지 않은 데이터가 모두 포함됨
데이터베이스 Open: 데이터베이스가 Open 되어 사용자에게 서비스를 제공할 수 있는 상태가 됨
UNDO (롤백): 언두 세그먼트를 사용하여 커밋되지 않은 트랜잭션을 롤백, 이 과정을 롤백이라고 부름
파일에 커밋된 데이터만 포함: 롤백 후 데이터 파일에는 커밋된 데이터만 남게 되어 데이터베이스의 일관성이 유지됨
3.2.5 Complete Recovery (완전 복구)
완전 복구 프로세스 단계
복원된 데이터 파일: 백업된 데이터 파일을 복원
변경 사항 적용 (아카이브 된 리두 로그, 온라인 리두 로그): 아카이브된 리두 로그 파일과 온라인 리두 로그 파일을 사용하여 복원된 데이터 파일에 변경 사항을 적용, 이 과정을 통해 데이터 파일은 특정 시점까지의 모든 커밋된 트랜잭션이 반영 됨
현시점까지 커밋/미커밋 트랜잭션 복구: 리두 로그 파일을 통해 커밋된 트랜잭션과 커밋되지 않은 트랜잭션을 모두 복구
언두 적용: 언두 세그먼트를 사용하여 커밋되지 않은 트랜잭션을 롤백, 이 과정을 통해 데이터베이스의 일관성 유지
Recovery된 데이터 파일: 완전 복구가 완료된 데이터 파일은 모든 커밋된 트랜잭션을 반영하고 일관성 유지
3.2.6 Point-in-Time Recovery (특정 시점 복구)
특정 시점 복구 프로세스 단계
과거의 필요한 시점에서 복원된 데이터 파일: 백업된 데이터 파일을 특정 시점으로 복원
PIT(point-in-time)에 적용된 변경 사항 (아카이브된 리두 로그, 온라인 리두 로그): 아카이브된 리두 로그 파일과 온라인 리두 로그 파일을 사용하여 복원된 데이터 파일에 PIT까지의 변경 사항을 적용, 이 과정을 통해 데이터 파일은 PIT까지의 모든 커밋된 트랜잭션 반영
PIT까지 커밋/미커밋 트랜잭션 포함 데이터 파일: 리두 로그 파일을 통해 PIT까지의 커밋된 트랜잭션과 커밋되지 않은 트랜잭션을 모두 복구
데이터베이스 열림: 데이터베이스를 Open 하여 복구 작업 시작
언두 적용: 언두 세그먼트를 사용하여 PIT 이후의 커밋되지 않은 트랜잭션 롤백, 이 과정을 통해 데이터베이스의 일관성 유지
PIT Recovery 데이터 파일: 특정 시점 복구가 완료된 데이터 파일은 PIT까지의 모든 커밋된 트랜잭션을 반영하고 PIT 이후의 변경 사항은 롤백되어 일관성 유지
3.2.7 RESETLOGS
RESETLOGS 옵션의 필요성
불완전 복구의 특성: 불완전 복구는 특정 시점(PIT)으로 데이터베이스를 복원하는 과정으로 이 과정에서는 현재 시점의 리두 로그를 적용할 수 없음
새로운 리두 로그 생성: 과거의 특정 시점으로 복구했기 때문에 새로운 리두 로그 생성 필요
RESETLOGS 옵션 사용: ALTER DATABASE OPEN RESETLOGS; 명령어를 사용하여 데이터베이스를 열고 새로운 리두 로그 생성
RESETLOGS 옵션 사용 시 주의사항
새로운 Incarnation 생성: RESETLOGS 옵션을 사용하여 데이터베이스를 열면 이전 데이터베이스와 다른 새로운 Incarnation(데이터베이스의 새로운 버전) 생성
이전 백업 및 아카이브 로그 사용 불가: 새로운 Incarnation이 생성되므로 이전 백업 및 아카이브 로그를 사용할 수 없음
RESETLOGS 옵션 사용 후 작업
백업 수행: RESETLOGS 옵션을 사용하여 데이터베이스를 연 후에는 반드시 새로운 백업을 수행해야 함
3.2.8 Flashback
플래시백 기술 개요
아카이브 로그 모드 필수: 플래시백 기능을 사용하려면 데이터베이스 아카이브 로그 모드 설정 필요
커밋 후 특정 시점 복구: 플래시백은 커밋된 트랜잭션 이후에도 특정 시점으로 데이터를 복원 가능