17. DATA RECOVERY ADVISOR

  • 'data failure' 발생시 빠르게 원인을 분석해서 복구 작업을 수행해야 한다.
    (Datafile, log file, control file 유실, 인스턴스 접근 불가등..)
  • 장애인지 -> 장애원인규명 -> 복구계획수립 -> 복구작업수행
  • 많은 작업시간이 '복구작업의 수행' 절차가 아닌 '장애의 원인규명'과 '복구계획수립' 절차에 소요
    ( 고도의 훈련과 경험필요)
  • 11g에서는 'data failure'에 의한 장애 발생시 신속하게 원인을 규명하고, 복구 방안을 제시,
    필요 복구 작업을 수행 할수 있는 Data Recovery Advisor 기능을 제공.
    • 자동화된 장애 원인 분석 기능 제공
    • 장애 문제 분석 리포트 생성
    • 다양한 장애 상황에 대한 지능화된 복구계획 제시
    • 백업의 존재 여부 및 시스템 구성(ex: Data Guard Standby 시스템 존재)에 따른 다양한 복구 방안 제시
  • Data Recovery Advisor 장점
    • 데이터베이스 프로세스가 corruption을 발견해서 에러를 발생시키기 전에 Data Recovery Advisor가 스스로
      data failure를 발견/분석/치유할 수 있다.
    • 수작업으로 data failure를 알아내고 분석한다는것은 매우 복잡하고, 오류를 야기시킬 수 있고, 시간이 오래걸리는 작업.
      Data Recovery Advisor는 자동으로 failure를 분석하고, 영향도를 평가하고, 이러한 결과(findings)를 리포팅 해줌.
    • 데이터 치유 작업은 복잡하고 실수를 야기시킬 수 있다. Data Recovery Advisor의 자동 치유 옵션을 선택하면,
      Data Recovery Advisor가 치유작업을 수행하고, 성공을 검증한다.

Data Recovery Advisor 기본개념

  • command-line interface와 GUI interface 모두 지원
  • GUI interface는 Enterprise Manager Database Control과 Grid Control을 통해 가능.
  • Commnad-line interface는 RMAN을 통해 가능.
    (LIST FAILURE, ADVISE FAILURE, REPAIR FAILURE, CHANGE FAILURE)

Failure

  • 분석할 수 있는 failure
    • datafie, control file 등이 삭제됐거나, 접근 근권한이 없거나, offline으로 변경된 경우 등 오라클 인스턴스에 접근할 수 없는 경우
    • block checksum 에러나 유효하지 않은 block header값 등과 같은 물리적 corruption.
    • 특정 datafile이 다른 database file들에 비해 오래된 버전인 것과 같은 inconsistency 상황.
    • 하드웨어 에러, OS 드라이버 에러, OS resource limit 초과 등과 같은 I/O failure 상황등.
  • failure 정보는 Automatic Diagnostic Repository(ADR)에 저장. 이 ADR은 데이터베이스가 아닌 file system에 존재.
  • ADR에 접근하기 위해 데이터베이스가 open이나 mount되어 있을 필요가 없으며, NOMOUNT 모드로도 충분.
  • Failure Status
    • 모든 failure는 OPEN이나 CLOSED라는 status 값을 가진다. Failure에 대한 적절한 치유 작업이 수행되기 전까지 OPEN 상태이며,
      치유된 후 CLOSED로 변경된다.
  • Failure Priority
    • 모든 failure는 CRITICAL, HIGH, LOW 셋 중 하나의 priority를 가지며, Data Recovery Advisor는 분석된 failure에 대해 CRITICAL이나 HIGH priority만을 부여.
    • CRITICAL : control file이 있는 디스크에 장애가 발생한 것과 같이 데이터베이스 작동이 불가능한 상황에 이르게 되는 경우로, 즉각적인 작업이 필요.
    • HIGH priority : block corruption 등과 같이 데이터베이스의 일정 부분만 가용하지 않은 경우로, 역시 빠른 치유가 필요합.
  • Failure Grouping
    • Failure 상황을 명료하게 표현하기 위해 Data Recovery Advisor는 관련된 failure들을 묶어 그룹으로 만든다. 만일 특정 파일에 20개의 block corruption이
      발생했다면, 이 20개의 failure들은 하나의 parent failure 아래로 그룹핑된다. 기본적으로 Data Recovery Advisor는 failure group 정보들을 보여주며,
      DETAIL 옵션을 지정하면 각각의 subfailure 정보까지도 확인할 수 있다.
  • 모든 failure list를 보기위해 RMAN에서 LIST FAILURE 명령 사용.

RMAN> LIST FAILURE;

List of Database Failures
=========================

Failure ID Priority Status Time Detected Summary
---------- -------- --------- ------------- -------
142 HIGH OPEN 23-APR-07 One or more non-system datafiles are missing
101 HIGH OPEN 23-APR-07 Datafile 1: '/disk1/oradata/prod/system01.dbf' contains one or more corrupt blocks

  • Failure 101에 대한 자세한 정보 출력 : DETAIL option 부여

RMAN> LIST FAILURE 101 DETAIL;

List of Database Failures
=========================

Failure ID Priority Status Time Detected Summary
---------- -------- --------- ------------- -------
101 HIGH OPEN 23-APR-07 Datafile 1: '/disk1/oradata/prod/system01.dbf' contains one or more corrupt blocks

List of child failures for parent failure ID 101
Failure ID Priority Status Time Detected Summary
---------- -------- --------- ------------- -------
104 HIGH OPEN 23-APR-07 Block 56416 in datafile 1: '/disk1/oradata/prod/system01.dbf' is mediacorrupt

Impact: Object BLKTEST owned by SYS might be unavailable

Repair Option

  • 분석된 failure에 대한 치유 방안을 제시하는데, Data Recovery Advisor 스스로 자동 치유할 수 있는 경우가 automatic repaire option,
    그렇지 않은 경우가 manual repair option.
  • 특정 datafile이 사라진 경우 해당 파일에 대한 RMAN backup본이 있다면 Data Recovery Advisor가 해당 datafile을 복원/복구할 수 있다.(automatic action)
  • control file이 사라졌는데 이에 대한 backup본이 없다면 CREATE CONTROLFILE 문자으로 control file을 수동으로 재생성(manual action)
  • ADVISE FAILURE 명령어를 통해 repair option확인

RMAN> ADVISE FAILURE;

List of Database Failures
=========================

Failure ID Priority Status Time Detected Summary
---------- -------- --------- ------------- -------
142 HIGH OPEN 23-APR-07 One or more non-system datafiles are missing
101 HIGH OPEN 23-APR-07 Datafile 1: '/disk1/oradata/prod/system01.dbf' contains one or more corrupt blocks

analyzing automatic repair options; this may take some time using channel ORA_DISK_1
analyzing automatic repair options complete

Mandatory Manual Actions
========================
no manual actions available

Optional Manual Actions
=======================
1. If file /disk1/oradata/prod/users01.dbf was unintentionally renamed or moved, restore it

Automated Repair Options
========================
Option Repair Description
------ ------------------
1 Restore and recover datafile 28; Perform block media recovery of block 56416 in file 1
Strategy: The repair includes complete media recovery with no data loss 
Repair script: /disk1/oracle/log/diag/rdbms/prod/prod/hm/reco_660500184.hm

  • Automated Repair Options 부분을 보면 missing datafile에 대한 restore/recover와 block media recovery가 포함되어 있음
    (missing datafile이 실수로 rename되었거나 다른 폴더로 옮겼다는 사실을 알면 굳이 restore/recover할 필요없이
    OS상에서 원래의 이름으로 복원하거나 옮기기만 하면 될 것. 이 내용이 Optional Manual Actions 부분에 있다.)

Repair Script

  • Data Recovery Advisor가 automatic repair option을 만들어낼 때 RMAN이 사용할 명령어에 대한 스크립트를 OS 상의 텍스트 파일로 생성.
  • 앞의 예 마지막 부분을 보면 Repair script가 OS 상에 생성됐음을 확인할 수 있다

Repair Failure

  • Automatic repair option인 경우 Data Recovery Advisor가 repair script를 이용해 치유작업을 자동으로 수행하도록 할 수 있다.
  • REPAIR FAILURE 명령을 통해 치유 작업을 수행. (PREVIEW option을 통해 내용을 미리 파악할 수도 있다)

RMAN> REPAIR FAILURE PREVIEW;

Strategy: The repair includes complete media recovery with no data loss
Repair script: /disk1/oracle/log/diag/rdbms/prod/prod/hm/reco_475549922.hm
contents of repair script:
# restore and recover datafile
sql 'alter database datafile 28 offline';
recover datafile 28;
sql 'alter database datafile 28 online';
# block media recovery
recover datafile 1 block 56416;

-- 치유 작업 수행
RMAN> REPAIR FAILURE;

Strategy: The repair includes complete media recovery with no data loss
Repair script: /disk1/oracle/log/diag/rdbms/prod/prod/hm/reco_475549922.hm
contents of repair script:
# restore and recover datafile
sql 'alter database datafile 28 offline';
restore datafile 28;
recover datafile 28;
sql 'alter database datafile 28 online';
# block media recovery
recover datafile 1 block 56416;

Do you really want to execute the above repair (enter YES or NO)? YES
executing repair script

sql statement: alter database datafile 28 offline

Starting restore at 23-APR-07
using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00028 to /disk1/oradata/prod/users01.dbf
channel ORA_DISK_1: reading from backup piece
/disk2/PROD/backupset/2007_04_18/o1_mf_nnndf_TAG20070418T182042_32fjzd3z_.bkp
channel ORA_DISK_1: piece
handle=/disk2/PROD/backupset/2007_04_18/o1_mf_nnndf_TAG20070418T182042_32fjzd3z_.bkp
tag=TAG20070418T182042
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:03
Finished restore at 23-APR-07

Starting recover at 23-APR-07
using channel ORA_DISK_1

starting media recovery
media recovery complete, elapsed time: 00:00:01
Finished recover at 23-APR-07

sql statement: alter database datafile 28 online
Starting recover at 23-APR-07
using channel ORA_DISK_1
searching flashback logs for block images until SCN 429690
finished flashback log search, restored 1 blocks

starting media recovery
media recovery complete, elapsed time: 00:00:03

Finished recover at 23-APR-07
repair failure complete

제약사항

  • 지원되는 데이터베이스 구성
    • Data Recovery Advisor는 단일 인스턴스 데이터베이스만 지원
    • standby database로부터 전송된 파일이나 block을 이용해서 primary database의 data failure를 치유할 수 없고,
      또한 standby database의 data failure에 대한 분석과 치유가 불가능.
      (primary database의 data failure에 대한 치유 방안으로 standby database로의 failover는 지원)