## 데이터 파일 기준
begin BACKUP 시작
→ DML 쿼리 수행 (데이터 변경)
→ CHECKPOINT 발생
→ datafile의 데이터 block에 입력 (변경 사항들 또한 redo log와 archive log에 저장)
→ Datafile header에는 CHECK POINT SCN이 BEGIN BACKUP 시점의 SCN값으로 고정
※ begin backup을 시작하면 리두로그 파일과 아카이브 파일이 증가하여 데이터파일에 내려적히지 않는다고 알고 있는 사람이 많은데 오라클의 블록 저장단위가 일반적으로 8K이고 OS가 4K라서 아카이브 파일의 크기가 크게 증가하는 것이다.
참고자료 : https://bash-park.tistory.com/15
※ 데이터 블록 크기
→ 대부분 8K 사용
→ 블록의 크기가 커지면 성능적인 부분은 더 좋아짐
→ 대신 락 되는 부분이 커지기 때문에 경합이 발생함
→ 작을수록 OLTP에 유용하고 클수록 배치에 유용
## 체크포인트 기준
1. 테이블 스페이스 리스트 조회
SQL> select file_id, tablespace_name
2 from dba_data_files;
FILE_ID TABLESPACE_NAME
---------- ------------------------------
1 SYSTEM
3 SYSAUX
4 UNDOTBS1
7 USERS
5 DAMIN_DATA_TS
2 DAMIN_IDX_TS
6 rows selected.
2. 체크포인트 조회
select a.FILE#, a.CHECKPOINT_TIME, b.CHECKPOINT_CHANGE#, a.CHECKPOINT_CHANGE#
2 from v$datafile a, v$datafile_header b
3 where a.file# = b.file#
4 and a.name = b.name
5 order by a.checkpoint_change#;
FILE# CHECKPOINT_TIME CHECKPOINT_CHANGE# CHECKPOINT_CHANGE#
---------- ------------------ ------------------ ------------------
3 21-APR-23 2861609 2861609
4 21-APR-23 2861609 2861609
2 21-APR-23 2861609 2861609
7 21-APR-23 2861609 2861609
5 21-APR-23 2861609 2861609
1 21-APR-23 2861609 2861609
3. 테이블 스페이스 백업 시작 (begin)
alter tablespace SYSTEM begin backup;
4. 다시 체크포인트 조회
→ FILE ID 1인 SYSTEM의 체크포인트만 상승한 것을 확인할 수 있다.
select a.FILE#, a.CHECKPOINT_TIME, b.CHECKPOINT_CHANGE#, a.CHECKPOINT_CHANGE#
2 from v$datafile a, v$datafile_header b
3 where a.file# = b.file#
4 and a.name = b.name
5 order by a.checkpoint_change#;
FILE# CHECKPOINT_TIME CHECKPOINT_CHANGE# CHECKPOINT_CHANGE#
---------- ------------------ ------------------ ------------------
3 21-APR-23 2861609 2861609
4 21-APR-23 2861609 2861609
2 21-APR-23 2861609 2861609
7 21-APR-23 2861609 2861609
5 21-APR-23 2868095 2868095
1 21-APR-23 2871512 2871512
5. checkpoint 발생
alter system checkpoint;
6. 다시 체크포인트 조회
→ checkpoint를 발생시키고 다시 조회를 해보면 file 번호 1인 SYSTEM의 체크포인트만 제외하고 상승한 것을 확인 가능하다.
select a.FILE#, a.CHECKPOINT_TIME, b.CHECKPOINT_CHANGE#, a.CHECKPOINT_CHANGE#
2 from v$datafile a, v$datafile_header b
3 where a.file# = b.file#
4 and a.name = b.name
5 order by a.checkpoint_change#;
FILE# CHECKPOINT_TIME CHECKPOINT_CHANGE# CHECKPOINT_CHANGE#
---------- ------------------ ------------------ ------------------
1 21-APR-23 2871512 2871512
7 21-APR-23 2871573 2871573
4 21-APR-23 2871573 2871573
5 21-APR-23 2871573 2871573
2 21-APR-23 2871573 2871573
3 21-APR-23 2871573 2871573
7. 테이블 스페이스 백업 종료 (end)
SQL> alter tablespace SYSTEM end backup;
8. 다시 checkpoint 조회
→ 종료되면서 checkpoint SCN이 모두 동일하게 맞춰지게 된다.
select a.FILE#, a.CHECKPOINT_TIME, b.CHECKPOINT_CHANGE#, a.CHECKPOINT_CHANGE#
2 from v$datafile a, v$datafile_header b
3 where a.file# = b.file#
4 and a.name = b.name
5 order by a.checkpoint_change#;
FILE# CHECKPOINT_TIME CHECKPOINT_CHANGE# CHECKPOINT_CHANGE#
---------- ------------------ ------------------ ------------------
1 21-APR-23 2871573 2871573
2 21-APR-23 2871573 2871573
7 21-APR-23 2871573 2871573
4 21-APR-23 2871573 2871573
5 21-APR-23 2871573 2871573
3 21-APR-23 2871573 2871573
※ 너무 큰 크기의 데이터 파일들은 여러개로 분할하는 것이 원활한 백업과 복구작업에 유용
'ORACLE > ORACLE_Backup&Recovery' 카테고리의 다른 글
rman advise를 이용한 복구 테스트 (0) | 2023.06.18 |
---|---|
RECYCLEBIN / RENAME (0) | 2023.06.08 |
noresetlogs / resetlogs 비교 (0) | 2023.04.20 |
RMAN을 이용한 CloneDB 생성 (0) | 2023.04.20 |
Hotbackup CloneDB 생성 (0) | 2023.04.20 |