Archive Mode

BUMSOO·2024년 9월 2일

Backup & Recovery

목록 보기
5/18

ARCHIVELOG

  • LOG SWITCH가 발생하면 CHECKPOINT가 발생하고 ARC BACKGROUND PROCESS가 현재 Redo Logf File을 물리적 다른 위치에 복사한 후 Redo Log File은 재사용 할 수 있다.
  • Control File에 archive 된 redo log file의 정보를 기록한다.
  • 데이터베이스를 정상적인 종료 후에 백업을 수행할 수 있고, 운영중에도 백업을 수행할 수 있다.
  • archive log mode는 online backup, hot backup, open backup을 수행할 수 있다.
  • 복구는 현재 문제되는 시점까지 복구가 가능하다.(단 리두가 있을 경우)

ARCHIVELOG 설정

  • archive log mode 확인

    • database log mode : archive log mode 확인
    • Automatic archival : ARC 백그라운드 프로세스 사용 여부
    • Archive destination : archive log 파일이 저장되는 위치
    • Oldest online log sequence : 가장 오래된 시퀀스 번호
    • Current log sequence : current한 시퀀스 번호
  • 실제 archive redo log가 저장되는 위치
    - 아카이브의 위치를 지정하지 않으면 기본값으로 설정되는 위치
    show parameter db_recovery_file_dest

archive log file이 생성될 디렉터리 생성

  • arch 1, arch 2 디렉터리 생성

archive log file이 생성되는 위치 설정

show parameter log_archive_dest

  • log _archive_dest 파라미터는 static 파라미터이다.
  • mandatory : archive 작업이 성공적으로 완료되어야 redo log file을 겹쳐 사용할 수 있다. 만약에 mandatory로 설정되어 있는 곳에 공간이 부족할 경우 기다린다.
  • optional : archive 작업이 성공적으로 완료되지 않은 경우에도 redo log file을 겹쳐 사용할 수 있다. 공간이 부족하면 archive log file이 생성되지 않습니다. 기본값
alter system set log_archive_dest_1 = 'loaction=/home/oracle/arch1 mandatory' scope = spfile; 

alter system set log_archive_dest_2 = 'loaction=/home/oracle/arch2 optional' scope = spfile;

archive log file이 생성될때 이름 포맷

show parameter log_archive_format

  • %t : thread number, instance number
  • %s : log sequence number
  • %r : resetlogs id, 여러 데이터베이스에 걸쳐 아카이브된 로그파일의 유일한 이름을 나타낸다.

뒤에 있는 dbf가 아닌 arc 확장자로 변경
alter system set log_archive_format = 'arch_%t_%s_%r.arc' scope = spfile;

noarchive log mode에서 archive log mode 전환

  1. DB 정상적인 종료
    SHUTDOWN IMMEDIATE

  2. MOUNT 단계 까지만 STARTUP
    STARTUP MOUNT

  3. MOUNT단계에서 archive log mode로 변경
    alter database archivelog;

  4. DB open
    ALTER DATABASE OPEN;

  • 기본 archive 저장 위치는 마지막 dest로 지정된 디렉터리이다.

  • 아카이브 설정 이전 redo log 파일의 ARCHIVED 컬럼은 YES로 표시된다.

  • SHOW PARAMETER archive
    log_archive_max_processes : arc 백그라운드 프로세스 최대설정 갯수, 최대 30개가능

  • archive 파일 destination 설정된 veiw 확인

select destination, binding, status from v$archive_dest;

  • 논리적으로 생성된 archive log 확인
    select * from v$archived_log;

- 수동으로 log switch 발생

  • active하게 변경된 reo log 그룹에 대한 archive가 생성되었다.

- 논리적으로 확인(컨트롤파일)
select * from v$archived_log;

- 물리적으로 저장되었는지 확인

  • 꼭 컨트롤파일(v$archived_log)의 논리적 설정과 물리적 파일이 같은지 확인해야한다.

- current한 그룹의 아카이브 파일을 받고 싶을때
수동으로 log switch를 해줘도 되지만 해당 명령어로도 가능하다.
alter system archive log current;

- ARC 프로세스 확인
ps -ef | grep arc

4개의 arc 프로세스가 실행되고 있다.

- 오라클 시작시에 archive process 기본으로 생성한 갯수(최대30)
show parameter log_archive_max_processes

ARCHIVE LOG MODE BACKUP

offline backup, close backup, cold backup, 일관성 있는 백업

1. data file 체크포인트 확인

2. db 정상 종료

3. 만일을 대비해 백업본 생성

4. 운영중에 백업 받을 디렉터리 생성

5. DB STARTUP

6. 초기파라미터 파일 백업

- close 디렉터리에 백업
CREATE PFILE='/home/oracle/backup/arch/close/initORA19C.ora' from spfile;
- open 디렉터리에 백업
CREATE PFILE='/home/oracle/backup/arch/open/initORA19C.ora' from spfile;

online backup, hot backup, open backup, 일관성 없는 백업

7. v$datafile 과 v$backup 조인해서 확인

select a.name, a.checkpoint_change#, b.status. b.change#, b.time
from v\$datafile a, v$backup b
where a.#file = b.file#;

8. online backup 수행

  • full checkpoint가 발생한다.
    alter database begin backup;
    - 백업이 진행중인 상태

9. 현재 데이터베이스 운영중에 데이터 파일들을 백업 수행

$ORACLE_BASE/oradata/ORA19C/*.dbf -> /home/oracle/backup/arch/open

10. online backup 중에는 데이터 버퍼 캐시에 있는 더티 버퍼들을 disk에 내릴수 없어 redo log 파일에 임시로 넣는다.

11. 물리적 backup이 끝났다면 backup end를 해줘야한다.

alter database end backup;

  • end backup 한뒤에 혹시 redo log 파일에 begin backup 한동안 들어온 데이터가 있다면 data file에 옮겨준다.

12. 딕셔너리 확인

  • status가 not active로 변경되어 있다.
  • change# 에 값이 있으면 한번이라도 backup을 받았다고 생각하면 된다.

online 중에 control file 백업

  • 현재 control file 위치 확인
    select name from v$controlfile;

  • control file 백업
    alter database backup controlfile to '/home/oracle/backup/arch/open/control01.ctl';

백업파일 SCN에 맞는 archive log 파일 생성

  • backup 받아놓은 데이터파일 checkpoint 확인

  • redo log 그룹의 checkpoint 정보 확인

백업파일의 checkpoint가 current한 리두로그 파일에 속해있기 때문에 current한 redo log를 archive 파일로 만들어야 한다.

  • 수동으로 archive 만들기

  • 백업 데이터파일의 checkpiont까지 가지고 있는 archive 파일이 생성되었다

  • 논리적으로 생성된 archive log 확인

  • 백업 받은 시점의 checkpoint 확인

백업받은 checkpoint는 4139227로 다운받아 놓은 archive 파일 중에서 백업 checkpoint가 속해 있는 파일만 남겨놓고 나머지는 지워야 한다(용량관리). 의미 없는 파일이기 때문이다.

0개의 댓글