RAC 백업과 아카이브 로그 배치
RAC의 공유 백업 저장소와 thread별 아카이브 로그 확인, FRA 용량 관리 및 ASM 미러링과 백업의 차이
#핵심 요약
RAC 인스턴스는 각자 redo thread를 씀
한 노드에서 데이터베이스를 복구해도 다른 노드가 만든 thread의 아카이브 로그가 필요할 수 있음
아카이브 로그와 백업을 ASM 디스크 그룹이나 공유 파일 시스템(FRA)에 두면 어느 노드에서나 바로 접근함
노드별 로컬 경로에 두면 그 노드에서만 보여, 다른 노드에서 복구할 때 복사하거나 NFS로 보이게 해야 함
FRA가 한도에 가까워지면 아카이빙이 멈출 수 있으므로 사용량을 보고, 한도는 SCOPE = BOTH SID = '*'로 모든 인스턴스에 함께 바꿈
ASM 미러링은 디스크 장애 대비임
삭제나 논리 손상도 미러에 그대로 반영되므로 과거 시점 복구에는 RMAN 백업과 아카이브 로그가 따로 필요함
#개념과 동작 원리
| 구분 | Raw Device 구성 | ASM 또는 클러스터 파일 시스템 |
|---|---|---|
| 아카이브 로그 위치 | 각 노드의 로컬 파일 시스템 | FRA(공유 저장소) |
| RMAN 백업 위치 | 로컬 | FRA |
| 한 노드에서 복구할 때 | 다른 노드의 아카이브 로그를 복사하거나 NFS로 보이게 해야 함 | 어느 노드에서나 바로 접근 |
| 실습 권장 | 아님 | 권장 |
| ASM 디스크 그룹 TYPE | 의미 |
|---|---|
| NORMAL | ASM 2중 미러링 |
| HIGH | ASM 3중 미러링 |
| EXTERN | 외부 스토리지의 미러링에 의존 |
#필수 명령어 또는 SQL
#복구 파일의 저장 위치 확인
SHOW PARAMETER db_recovery_file_dest
ARCHIVE LOG LIST결과 해석:
실습 기록: 두 노드 모두 DB_RECOVERY_FILE_DEST가 +FRA, 아카이브 대상이 USE_DB_RECOVERY_FILE_DEST였음
설명: /u01/... 같은 로컬 경로라면 파일이 그 노드에만 남을 수 있음
#thread별 아카이브 로그 확인
ALTER SYSTEM ARCHIVE LOG CURRENT;SELECT thread#, sequence#, name
FROM v$archived_log
WHERE first_time > SYSDATE - 1/24
ORDER BY thread#, sequence#;결과 해석:
설명: 한 노드에서 ARCHIVE LOG CURRENT를 실행해도 모든 thread가 아카이브됨
THREAD# 1은 1번 노드, THREAD# 2는 2번 노드가 만든 로그이고, 둘 다 +FRA에 있으면 1번 노드에서도 보임
빠진 시퀀스가 있는지 확인:
SELECT thread#,
MIN(sequence#) min_seq,
MAX(sequence#) max_seq,
COUNT(DISTINCT sequence#) cnt
FROM v$archived_log
WHERE deleted = 'NO'
GROUP BY thread#
ORDER BY thread#;결과 해석: thread마다 MAX_SEQ - MIN_SEQ + 1 = CNT면 그 범위 안에 빠진 번호가 없음CNT가 더 작으면 빈 번호가 있음
#FRA 사용량과 백업 위치
SELECT name, space_limit/1024/1024 limit_mb, space_used/1024/1024 used_mb,
space_reclaimable/1024/1024 reclaim_mb, number_of_files
FROM v$recovery_file_dest;
SELECT file_type, percent_space_used, percent_space_reclaimable, number_of_files
FROM v$recovery_area_usage;BACKUP CURRENT CONTROLFILE;SELECT handle FROM v$backup_piece;결과 해석:
설명: FRA에는 아카이브 로그, RMAN 백업 조각, 컨트롤 파일 자동 백업, 플래시백 로그가 쌓임
백업 조각은 +FRA/<DB_NAME>/BACKUPSET/...에 있었음SPACE_USED가 SPACE_LIMIT에 가까워지면 아카이빙이 멈출 수 있음
FRA 한도를 운영 중에 늘리기:
SELECT name, type, total_mb, free_mb FROM v$asm_diskgroup;ALTER SYSTEM SET db_recovery_file_dest_size = <SIZE> SCOPE = BOTH SID = '*';SHOW PARAMETER db_recovery_file_dest_size결과 해석:
설명: SID = '*'는 모든 인스턴스, 특정 SID를 주면 그 인스턴스에만 적용됨SCOPE = BOTH는 메모리와 SPFILE에 함께 반영해 재기동 뒤에도 유지됨
바꾸기 전에 V$ASM_DISKGROUP.FREE_MB로 디스크 그룹의 실제 여유를 확인함
실습에서는 30G로 바꿨고 2번 노드에서도 30G로 보였음
#사용 조건과 주의사항
실습에서는 FRA 한도를 바꾸기 전에 +FRA 디스크 그룹의 여유 공간부터 확인하라고 적었음