본문 바로가기

오라클 백업/복구

백업 파일 / 아카이브 로그에 문제가 있을 때 복구



1. 데이터 파일끼리 SCN다르고 아카이브 로그 없는 상황


이 상황은 데이터 파일 백업을 잘 못 수행해서 백업된 데이터 파일끼리 SCN정보가 다르고

아카이브 로그 조차도 없는 상황 --> 최악의 상황임 ㅋ

이 방법으로 100% 복구 되는 것도 아님.


no archive log mode 이기때문에 스크립트를 통해 control file 만들고 DB MOUNT 시키고

recover database using backup control file 했을 때 복구가 안된다.

그.래.서 (CLONE DB로 복구)

1. 복구서버용 파라미터 생성 및 수정

파라미터 파일에 히든 파라미터 적용

_offline_rollback_segments=(사용중이던롤백세그먼트) --> 강제로 해당 undo tablespace를 오프라인 시킴


_corrupted_rollback_segments=true --> 롤백 세그먼트가 문제가 있을 시 장비가 OPEN되지 않는데 그냥 무시하고 올림


_allow_resetlogs_corruption=true


2. CONTROL FILE 재생성 스크립트 만들기

3. export ORACLE_SID=

4. 생성된 스크립트로 DB 시작

5. startup mount ;

6. alter session set events '10015 trace name adjust_scn level 1' ;

7. recover database until cancel using backup controlfile ; -> cancel

8. alter database open resetlogs ;


startup 이 안될 경우에는 alter session set events '10015 trace name adjust_scn level 1' ; 에서 1을 2, 3으로 증가시켜서 시도

3까지 했는데도 안되면 다른 방법으로 해야 함.. (이건 나도 모름)


다시 하는 방법은 

clonedb shutdown -> 임시 경로 가서 데이터파일 제외 모두 삭제 -> 컨트롤파일 스크립트 다시 실행

-> mount까지 올려서 -> 6번 과정부터 쭉


이렇게 open 된 후에는 파라미터 파일에서 아까 쓴 3개 히든 파라미터 지워주고

복구후에는 반.드.시. 전체 데이터베이스 export로 백업 받기



[실습]




2. Incarnation number 다른 백업 파일 사용하여 복구하기


백업 수행 후에 resetlogs로 database가 open되어 사용되다가 장애 발생해서

백업 파일로 복구를 시도했지만 'incarnation' 에러가 발생하면서 복구가 안되는 경우


아카이브 로그 파일 이름 지정할 때

%s_%t_%r_.arc


s=sequence

t=thread, instance number라고 생각하면됨, single일 때는 무조건 1, RAC일 때는 노드에 

r=incarnation number, open resetlogs 하면 로그 파일이 아예 리셋되면서 sequence #가 처음으로 돌아가는데 

이렇게 되면 open resetlogs 하기 전이랑 후랑 구별을 할 수 없게 됨. 

resetlogs로 open 전 후의 log #를 구분해 주는 번호라고 생각하면 됨



데이터 파일이 삭제된 경우


백업 파일을 삭제된 데이터파일이 있는 경로로 복사한 후

> recover tablespace users ; -> auto

> alter tablespace users online ;



[실습]




3. 전체 데이터 파일 삭제 후 Incarnation 번호 다른 파일 사용해서 복구


백업 데이터 파일과 현재 control file의 incarnation 번호가 다른 경우 복구하는 방법


모든 데이터 파일이 삭제된 경우


MOUNT 상태에서

위 케이스와 마찬가지로 백업파일들을 삭제된 데이터파일들이 있는 경로로 복사 후

> recover database ; -> auto

> alter database open ;


복구 실패했다면 백업 데이터파일과 컨트롤 파일간의 checkpoint 정보가 맞지 않아서 그런거니까

control file 재생성해서 resetlogs 옵션으로 open 시키면 됨


또한 백업 데이터 파일이 begin backup이거나 archive log가 중간에 없다면 

히든 파라미터인 _allow_resetlogs_corruption=ture를 적용 시켜

resetlogs 옵션으로 open 시키면 됨



[실습]











'오라클 백업/복구' 카테고리의 다른 글

Flashback 2 - Table Level  (0) 2013.02.14
Flashback 1 - Row Level  (0) 2013.02.13
SQL Loader  (0) 2013.02.11
Clone DB를 이용한 무정지 상태에서의 응급 복구  (0) 2013.02.07
Datapump  (1) 2013.02.06