본문 바로가기

오라클 백업/복구

RMAN - 복구 (완전 복구)



RMAN 복구 방법은 이때까지 해왔던 방법이랑 다른점 없음


1. 사용 안함 설정 -> offline, shutdown

2. 백업 복원 -> restore

3. 복구 -> recover

4. 사용함 -> online, open


필요없는 것은 offline 시키고

임시경로를 통해서 복구


대신 이 과정들을 수동으로 직접 수행하는 것이 아니라 RMAN 한테 명령어로 시키면 알아서 수행



Restore - 백업 파일로부터의 복원

Recover - Redo Log/Archive Log 적용시켜 복구





1. offline 가능한 data file 삭제 복구작업


예) users tablespace datafile 삭제됨


독립형 명령어

RMAN> sql 'alter tablespace users offline immediate' ;

RMAN> restore tablespace users ;

RMAN> recover tablespace users ;

RMAN> sql 'alter tablespace users online' ;


작업형 명령어

RMAN> run {

 2> sql 'alter tablespace users offline immediate' ;

 3> restore tablespace users ;

 4> recover tablespace users ;

 5> sql 'alter tablespace users online' ;

 6> }

--> 명령어 한꺼번에 적어주면서 RMAN이 순서대로 알아서 수행하기 때문에 작업형 명령어로 작업하기


[실습]


offline -> 그냥 offline

offline temporary -> 하나의 테이블스페이스에 두개의 데이터파일이 있다고 가정하에 그중 데이터파일 하나가 장애났을때

  복구하기 위해서 다른 데이터파일 그냥 offline 하면 안됨, offline temporary 해야지 offline 된다.

offline immediate -> 누군가가 쓰고 있어도 무조건 offline





2. offline 불가능 한 data file 삭제 복구작업


예) offline 불가능한 system tablespace datafile 삭제됨

RMAN> run {

 2> startup mount ;

 3> restore database ;

 4> recover database ;

 5> alter database open ;

 6> }


[실습]





3. 임시 경로에서 복구


복원 경로를 다른 위치로 지정하는 명령어

> set new name for datafile 번호또는경로 to 새위치경로및파일명

restore 하기전에 경로를 먼저 지정해줘야 한다


복원 후 반드시 control file의 내용을 바꿔주기 위해

> swich datafile 파일번호

작업해주기 -> alter database rename 작업과 동일한 작업이다.


예) users tablespace datafile 삭제 


RMAN> run {

 2> sql 'alter tablespace users offline immediate' ;

 3> set newname for datafile '/data2/vol1/users01.dbf'

 4> to '/data/temp/users01.dbf' ;

 5> restore tablespace users ;

 6> switch datafile 4 ;

 7> recover tablespace users ;

 8> sql 'alter tablespace users online' ;

 9> }


나중에 datafile 목록들 살펴보면

알아서 users tablespace는 복구된 파일로 임시경로로 되어있는 것을 볼수 있음


[실습]





4. 필요한 datafile 만 복원 후 복구


모든 데이터 파일을 복원하지 않고

반드시 복구에 필요한 데이터 파일만 복원 후 복구 (system, sysaux, undotbs, 해당데이터가들어있는 datafile)


복구에 필요없는 파일은 RMAN에서 offline 처리 후

restore, recover 과정에서 skip 옵션을 사용해 복원, 복구 하지 않도록 설정


순서

control file이랑 redo log file 최근에 쓰던 것을 임시 경로로 복사

파라미터파일에서 controlfile 경로 변경

alter database rename을 통해 redo log file 경로 변경

복원 경로를 다른 위치로 지정

필요없는 데이터파일 drop

백업파일 없는 데이터파일 생성

필요없는 데이터파일 restore skip 해주기

alter database open ;


single quotation, double quotation 실수하지 않고 잘 쓰기!

alter 명령어는 " " double 로 묶어줘야 함


RMAN> run {

 2> sql "alter database rename file ''/data2/vol3/redo01_a.log''

 3>      to ''/data/temp/redo01_a.log''" ;

 4> sql "alter database rename file ''/data2/vol3/redo02_a.log''

 5>      to ''/data/temp/redo02_a.log''" ;

 6> sql "alter database rename file ''/data2/vol3/redo03_a.log''

 7>      to ''/data/temp/redo03_a.log''" ;

 8> sql "alter database rename file ''/data2/vol5/redo01_c.log''

 9>      to ''/data/temp/redo01_c.log''" ;

 10> sql "alter database rename file ''/data2/vol5/redo02_c.log''

 11>     to ''/data/temp/redo02_c.log''" ;

 12> sql "alter database rename file ''/data2/vol5/redo03_c.log''

 13>     to ''/data/temp/redo03_c.log''" ;

 14> set newname for datafile 1 to '/data/temp/system01.dbf' ;

 15> set newname for datafile 2 to '/data/temp/sysaux01.dbf' ;

 16> set newname for datafile 3 to '/data/temp/undotbs01.dbf' ;

 17> sql "alter database datafile ''/data2/vol1/example01.dbf'' offline drop" ;

 18> sql "alter database datafile ''/data/temp/users01.dbf'' offline drop" ;

 19> sql "alter database create datafile ''/data2/vol2/test01.dbf''

 20>      as ''/data/temp/test01.dbf''" ;

 21> restore database skip tablespace 'users','example' ;

 22> switch datafile all ;

 23> recover database skip tablespace 'users','example' ;

 24> alter database open ;

 25> }


[실습]






 백업 명령어가 안될때 


RMAN-03014: implicit resync of recovery catalog failed

RMAN-06004: ORACLE error from recovery catalog database: RMAN-20035: invalid high RECID


이런 에러가 뜨는데

report schema 내용이랑 target server에서의 datafile 정보랑 달라서 생기는 에러

자동적으로 resync를 수행하지 못하고 있는 것을 볼 수 있다.


RMAN> unregister database noprompt ;

RMAN> register database ;


하면 정보가 동기화됨



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

RMAN - Block Corruption Recovery + 11g New Features  (0) 2013.02.20
RMAN - 복구 (불완전 복구)  (0) 2013.02.19
RMAN - 백업  (0) 2013.02.19
RMAN - Recovery Catalog와 Channel  (0) 2013.02.18
Flashback 3 - Database Level  (0) 2013.02.17