• Read only tablespace 복구
  • 과거에 백업해놓은 파일을 복원만 하면 복구가 됨
  • 읽기 전용이므로 쓴 기록이 없음 -> 백업 모드 x, 오프라인 x
  • read only로 변경하기 위해서는 파일이 online(read write) 상태여야만 함
  • offline상태에서는 read only로 변경 불가능함
  • control file내에 해당 datafile을 read-only 상태로 설정하고 stop scn 기록
  • 해당 datafile의 header에도 stop scn 기록
  • sys.TS$에 stop SCN값 기록
  • 모드가 바뀔 때마다 백업이 필요
  • v$datafile_header : datafile에 기록된 헤더가 저장된 뷰
  • 실습 1
  1. employees테이블 복사하여 users tablespace에 테이블 생성 -> commit;
  2. read only로 모드 변경 : alter tablespace users read only;
  3. 체크포인트 확인 시 control file과 datafile에 users의 stop_scn(last_change#)이 기록된 것을 알 수 있음
  4. alter system checkpoint; -> read only의 테이블스페이스는 그대로이고 나머지 tablespace들만 체크포인트 기록
  5. 다시 read write(online) 모드로 변경 : alter tablespace users read write;
  6. 체크포인트 확인 시 모드가 변경되면서 다시 한번 users의 체크포인트가 기록된 것을 확인할 수 있음, stop_scn은 사라짐
  7. alter system checkpoint; -> 모든 파일의 checkpoint가 이루어짐
  8. 모든 체크포인트의 숫자가 동일해짐
  • 실습 2 - read only 상태에서 백업을 받은 후 복구
  1. users 테이블스페이스를 read only로 변경
  2. rman에서 configure controlfile autobackup on;
  3. backup tablespace users; -> read only 상태의 users 테이블스페이스를 백업
  4. sql에서 alter system checkpoint;
  5. alter system switch logfile; 5번
  6. ! rm /u01/app/oracle/orcl2/users01.dbf
  7. rman에서 validate database; 후 list failure; -> users tablespace 파일이 없음 확인
  8. sql 'alter tablespace users offline immediate';
  9. restore tablespace users;
  10. sql에서 alter tablespace users online; -> control file과 datafile의 scn이 모두 동일하므로 recovery 필요 없음
  • 실습 3 - read write 모드에서 백업 후 read only 모드로 변경했는데 데이터 깨짐
  1. 모드 변경했다는 기록이 필요하므로 recovery가 필요
  • Recovery Catalog
  • control file 데이터 복제(Replicate)
  • 더 많은 백업 기록 저장
  • show parameter control_file_record_keep_time : default 7, 컨트롤 파일 백업의 보관 기간 -> 사이즈가 제한적이기 때문
  • 많은 대상에 서비스 제공
  • RMAN 스크립트 저장

  • rman의 모든 정보 저장
  • Recovery Catalog 생성 단계

  • recovery catalog 구성
  1. recovery catalog를 사용할 db를 생성
  2. sql에서 create tablespace rcat_tbs datafile '/home/oracle/rcat01.dbf' size 15m;
  3. create user rcatowner identified by oracle default tablespace rcat_tbs quota unlimited on rcat_tbs; -> 리커버리 카탈로그를 사용할 유저 생성
  4. grant recovery_catalog_owner to rcatowner; -> 리커버리 카탈로그 생성 role 부여
  5. target db : orcl2 ------> catalog db : orcl
  6. orcl2의 rman 정보를 orcl의 rcatowner user의 schema에 저장
  7. 저장할 schema 생성 : rman에서 create catalog; -> 252개 objects를 생성
  8. orcl2의 rman 접속 : rman target /
  9. orcl의 rman 접속 : rman catalog rcatowner/oracle@orcl -> create catalog;
  10. rcatowner의 object들이 생성됨(252개)
  11. 이 중 RC가 붙은 object들이 recovery catalog와 관련된 것들
  12. target DB를 catalog DB에 등록 : orcl2에서 rman target / catalog rcatowner/oracle@orcl
  13. register database; - control file에 쓰인 정보(db 구조, 백업&리커버리 정보 등)를 카탈로그에 저장(resync)
  14. unregister database; -> yes -> 카탈로그에 저장한 내용 삭제
  • 실습
  1. orcl2에서 rman target / catalog rcatowner/oracle@rcat으로 접속
  2. create weekend_backup{
  3. backup database;
  4. }
  5. rcatowner@orcl> select * from rc_stored_script; -> rman에서 만든 스크립트 확인
  6. orcl2 rman(catalog 접속)에서 run{ execute script weekend_backup; } -> 스크립트 실행 가능
  • 아카이브 백업

  • 백업 자체를 오래 저장하겠다는 의미
  • 아카이브 백업 파일은 백업 보존정책과 무관한 백업
  • FRA에 저장 불가능 - 영구적으로 보존해야 하기 때문, FRA는 정해진 용량이 넘어가면 가장 오래된 파일부터 삭제함
  • 아카이브 백업 후 forever로 설정하면 delete obsolete 명령어에 지워지지 않음
  • image copy recovery
  • Image Copy : level 0 백업과 비슷한 백업
  • level 1 백업 시 베이스가 되는 Image copy에서 변경된 부분을 백업
  • 전날 받은 image copy 백업 파일에 변경된 부분의 백업본을 적용하여 사용
  • recovery에 걸리는 시간을 최소화
  • 항상 최신 버전의 백업 파일을 유지
  • 매일 level 1 백업(하루치)을 적용하며 사용

 

'Oracle > backup&recovery' 카테고리의 다른 글

flashback - 1  (0) 2020.01.15
temp db를 이용한 복구 + TTS  (0) 2020.01.13
RMAN - 5  (0) 2020.01.10

+ Recent posts