Hot Backup

열린 백업 (Hot backup/Open backup/Begin backup/Online backup)

- 데이터베이스 가동 중 전체 파일 백업

- Tablespace 단위로 백업 수행

- 11g부터 Database 단위도 가능 (Redo 발생량 문제로 비 권고)

- 백업 전 대상 Tablespace를 백업 모드로 적용하고, 백업 후 백업 모드를 해제

- Archive Log Mode 필수 (Redo log 파일로 변경하기 위해)

- Redo 발생량 급증, Archive 발생량 급증

- Data fileControl file만 백업 가능, Online Redo Log File은 백업 불가능 --> resetlogs 필요

 

열린 백업 원리

SQL > alter tablespace users begin backup; (DBWR 발생)

 

Checkpoint 발생해서 변경사항 datafile로 저장

마지막 checkpoint scn 정보를 data file control file 에 저장

데이터파일 헤더의 Hot-backup-in-progress 플래그에 백업 시작 정보 기록

이후의 변경된 데이터는 리두로그에 블록단위(데이터 손실을 막기위해)로 기록

--> Begin backup을 수행해도 테이블스페이스 변경은 가능

--> 백업 수행 시 archive 양이 급증 하므로 모니터를 더 잘해야함

백업 완료 후에는 반드시 end backup을 수행해야 함(hot backup을 수행 중에는 shutdown immediatenormal로 종료불가)

 

SQL > alter tablespace users end backup;

 

ALTER TABLESPACE BEGIN BACKUP 내부 처리 과정

1. ALTER TABLESPACE BEGIN BACKUP 명령이 수행되는 순간 체크포인트 신호가 발생하여 db 버퍼 캐시의

Dirty Block 들을 데이터 파일로 내려쓰는 작업이 시작됩니다.

 

2. 체크포인트 신호가 발생되면서 SCN은 동기화 작업이 일어나며 데이터 파일 헤더에 SCN이 기록됩니다.

 

3. ALTER TABLESPACE END BACKUP 명령이 완료 될 때까지 데이터 파일에 기록된 SCN은 변경되지 않는다.

하지만, 데이터 파일의 블록은 읽고 변경이 된다.

 

4. 최종 SCN 이후의 변경된 내용은 리두 로그 파일에 저장되어 있다가 ALTER TABLESPACE END BACKUP

명령을 수행하면 리두로그에 있는 데이터 파일에 기록

 

5. 복구는 ALTER TABLESPACE BEGIN BACKUP 명령을 수행했을 때 고정된 SCN을 기준으로 HOT백업 한

데이터 파일을 복권해서 복구할 수 있습니다. 그러면 리두 로그 파일에 기록된 내용을 ROLL FORWARD

되면서 HOT백업 한 시간까지의 모든 변경된 내용들이 적용됩니다.

 

 

01. BACK UP 대상 확인

SELECT TABLESPACE_NAME, FILE_NAME

FROM DBA_DATA_FILES;

 

 

02. BEGIN BACKUP MODE : 백업모드 적용 (CHECKPOINT 발생)

SELECT TABLESPACE_NAME, 'ALTER TABLESPACE '||TABLESPACE_NAME||' BEGIN BACKUP;'

FROM DBA_TABLESPACES

WHERE TABLESPACE_NAME NOT LIKE 'TEMP%';

 

03. OS BACKUP 수행

SELECT TABLESPACE_NAME, FILE_NAME, 'CP '||FILE_NAME||' /oracle11/backup/'||to_char(sysdate,'yyyymmdd')

FROM DBA_DATA_FILES;

 

04. END BACKUP MODE : 백업 모드 해제 (CHECKPOINT 발생)

SELECT TABLESPACE_NAME, 'ALTER TABLESPACE ' ||TABLESPACE_NAME||' END BACKUP;'

FROM DBA_TABLESPACES

WHERE TABLESPACE_NAME NOT LIKE 'TEMP%';

 

확인

select a. file#, a.name, b.status, to_char(b.time, 'YYYY-MM-DD:HH24:MI:SS') as time

from v$datafile a, v$backup b

where a.file#=b.file#;

 

05. control file 백업

alter database backup controlfile to '/oracle11/backup/20151229/control01.ctl';

'Study Note > Database' 카테고리의 다른 글

Offline 백업 본을 이용한 DB 복구  (0) 2016.02.26
Control File 장애 복구  (0) 2016.02.26
Cold Backup  (0) 2016.02.26
No Archive log / Archive log  (0) 2016.02.26
Recovery 원리  (0) 2016.02.26

+ Recent posts