Recovery Catalog DB

BUMSOO·2024년 12월 16일

Backup & Recovery

목록 보기
17/18

recovery catalog

rman backup 수행시에 백업 정보를 보관함으로써 control file이 손상되었을때 유용하다.

  1. catalog db를 만들기위해 디렉터리 생성
    `mkdir rcdb'

  2. catalog db 디렉터리에 rman을 이용해 백업셋 받기
    backup as compressed backupset format '/home/oracle/rcdb/%U_%T' database include current controlfile;

  3. 운영db의 current한 리두로그 그룹에 대해서 아카이브파일을 받고 catalog db 디렉터리에 복사

  4. catalog db를 만들기위한 pfile을 수정

*.compatible='19.0.0'
*.control_files='/home/oracle/rcdb/control01.ctl'#Restore Controlfile
*.db_name='rcdb'
*.log_archive_dest_1='location=/home/oracle/rcdb mandatory'
*.log_archive_format='arch_%t_%s_%r.arc'
*.undo_tablespace='UNDOTBS1'
DB_FILE_NAME_CONVERT=(/u01/app/oracle/oradata/ORA19C/, /home/oracle/rcdb/)
LOG_FILE_NAME_CONVERT=(/u01/app/oracle/oradata/ORA19C/, /home/oracle/rcdb/)
  1. oraenv 환경변수를 catalog db에 맞게 변경

  2. sqlplus에서 catalog db pfile을 이용해 nomount 단계까지 실행

  3. rman을 auxiliary로 실행 후 catalog db 생성

rman auxiliary /

duplicate target database to 'rcdb'
pfile='$ORACLE_HOME/dbs/initrcdb.ora'
nofilenamecheck
skip tablespace example
backup location '/home/oracle/rcdb';
  1. sqlplus로 catalog db 접속

  2. 백업정보를 저장할 신규 테이블스페이스 생성

create tablespace rc_tbs datafile '/home/oracle/rcdb/rc_tbs01.dbf' size 10m autoextend on;

  1. 백업정보를 관리해야할 user 생성
create user rc_user
identified by oracle
default tablespace rc_tbs
temporary tablespace temp
quota unlimited on rc_tbs;
  1. 권한(role) 부여
  • recovery_catalog_owner role은 필수다
grant connect,resource,recovery_catalog_owner to rc_user;
  1. rc_user로 접속 후 부여받은 role 권한 확인
    select * from session_roles;

  2. role이 가지고 있는 system 권한 확인
    select * from role_sys_privs;

  3. rman에서 catalog로 접속
    rman catalog rc_user/oracle

  4. catalog 생성
    create catalog;

target db(ora19c)에서 수행

  1. tnsnames.ora에 catalog db tns 추가

    - tnsping을 던져봐서 잘 접속이 되는지 확인
    tnsping tns;
  1. target db의 rman에도 접속하고 catalog db의 rman에도 접속
    rman target / catalog rc_user/oracle@rcdb

  2. target db의 controlfile의 정보들을 catalog db에 등록
    register database;

catalog db에서 target db 등록정보 확인

  1. 관리하는 target db를 확인
    select * from rc_database;

    select db_name,tablespace_name, name from rc_datafile;

target db에서 백업

  1. 백업을 받으면 target db의 controlfile에도 저장되지만 catalog db에도 내용이 저장된다.
    backup as compressed backupset database;
  1. ora19c db 내린다음에 컨트롤파일 삭제로 장애유발

  2. rman을 target db랑 catalog db 같이 접속
    rman target / catalog rc_user/oracle@rcdb

  3. db를 nomount 단계까지 올린 후 catalog db에 있는 정보 확인
    - 원래라면 백업정보는 controlfile이 가지고 있기 때문에 nomount 단계에서는 확인할 수 없지만 백업정보가 catalog db에도 있기 때문에 조회가 가능하다
    list backup;

  4. catalog db에 있는 가장 최근의 백업정보를 가지고 controlfile을 restore 해준다
    restore controlfile;

  5. restore 된 controlfile로 mount 단계까지 실행 후 database를 restore, recover 까지 한 후 DB는 RESETLOGS로 OPEN하면 된다.

Recovery catalog 사용해야할 이유

  • 백업정보를 가지고 있는 컨트롤 파일의 복제본
    - 컨트롤 파일이 손실되었을 경우 유용하다.
  • RMAN 스크립트를 저장

script

  • catalog db에서 저장되어 있는 스크립트 확인
    select * from rc_stored_script;

  • catalog db에서 저장되어 있는 스크립트 소스 확인
    select * from rc_stored_script_line;

  • rman에서 스크립트 생성

create script incr_0_backup {
	backup as compressed backupset incremental level 0 database include current controlfile;
    sql 'alter system archive log current'; }

  • rman에서 스크립트 내용 확인
    print script 스크립트이름;

  • rman에서 스크립트 수행
    run {execute script incr_0_backup;}

  • 스크립트 수정
replace script incr_0_backup {
	backup as compressed backupset incremental level 0 database;
    sql 'alter system archive log current'; }
  • 스크립트 삭제
    delete script incr_0_backup;

0개의 댓글