데이터베이스 연구실.log

RAC 백업과 아카이브 로그 배치

RAC의 공유 백업 저장소와 thread별 아카이브 로그 확인, FRA 용량 관리 및 ASM 미러링과 백업의 차이

RACFRAredo threadV$ARCHIVED_LOGV$RECOVERY_FILE_DESTV$RECOVERY_AREA_USAGEDB_RECOVERY_FILE_DEST_SIZESID='*'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

#복구 파일의 저장 위치 확인

SQL*Plus (SYSDBA, 각 노드)조회만 함
SHOW PARAMETER db_recovery_file_dest
ARCHIVE LOG LIST

결과 해석:

실습 기록: 두 노드 모두 DB_RECOVERY_FILE_DEST가 +FRA, 아카이브 대상이 USE_DB_RECOVERY_FILE_DEST였음
설명: /u01/... 같은 로컬 경로라면 파일이 그 노드에만 남을 수 있음

#thread별 아카이브 로그 확인

SQL*Plus (SYSDBA, 1번 노드)객체 또는 설정을 변경함
ALTER SYSTEM ARCHIVE LOG CURRENT;
SQL*Plus (SYSDBA, 1번 노드)조회만 함
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번 노드에서도 보임

빠진 시퀀스가 있는지 확인:

SQL*Plus (SYSDBA, 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 사용량과 백업 위치

SQL*Plus (SYSDBA)조회만 함
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;
RMAN객체 또는 설정을 변경함
BACKUP CURRENT CONTROLFILE;
SQL*Plus (SYSDBA)조회만 함
SELECT handle FROM v$backup_piece;

결과 해석:

설명: FRA에는 아카이브 로그, RMAN 백업 조각, 컨트롤 파일 자동 백업, 플래시백 로그가 쌓임
백업 조각은 +FRA/<DB_NAME>/BACKUPSET/...에 있었음
SPACE_USED가 SPACE_LIMIT에 가까워지면 아카이빙이 멈출 수 있음

FRA 한도를 운영 중에 늘리기:

SQL*Plus (SYSDBA, 1번 노드)조회만 함
SELECT name, type, total_mb, free_mb FROM v$asm_diskgroup;
SQL*Plus (SYSDBA, 1번 노드)객체 또는 설정을 변경함
ALTER SYSTEM SET db_recovery_file_dest_size = <SIZE> SCOPE = BOTH SID = '*';
SQL*Plus (SYSDBA, 각 노드)조회만 함
SHOW PARAMETER db_recovery_file_dest_size

결과 해석:

설명: SID = '*'는 모든 인스턴스, 특정 SID를 주면 그 인스턴스에만 적용됨
SCOPE = BOTH는 메모리와 SPFILE에 함께 반영해 재기동 뒤에도 유지됨
바꾸기 전에 V$ASM_DISKGROUP.FREE_MB로 디스크 그룹의 실제 여유를 확인함
실습에서는 30G로 바꿨고 2번 노드에서도 30G로 보였음

#사용 조건과 주의사항

실습에서는 FRA 한도를 바꾸기 전에 +FRA 디스크 그룹의 여유 공간부터 확인하라고 적었음

SEO_HKabsumveritas@gmail.comBuilt with Claude Code & Codex

마지막 갱신 개인 학습 기록이며 운영 환경 적용 전 공식 문서 확인 필요

두 글자 이상 입력, 위아래 화살표로 이동하고 Enter로 열기