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는 지원)