본문 바로가기

Oracle/admin

RMAN Backup & Restore & Recover

우선 테스트를 하기위해선 몇가지 사항들을 설정해야한다.
아래 그림과 같이 여러설정사항들중 끝에 # default 가 없는것은 설정을 바꾼값이 되겠다.
바꾼값들의 의미 :
retention policy to redundancy 2 - 백업본을 2본을 보유하겠다는 의미이다. 이것의 의미를 잘 이해해야하는데.. rman이 스스로 백업본에 대해 완전한 풀 백업본을 판단한다. 즉 1본의 의미가 풀백업본으로 1본으로 의미하는것이다.

backup optimization on - 이것은 변경된 부분만 백업을 받겠다는 의미이다. 

controlfile autobackup on - 컨트롤파일을 백업시에 자동으로 같이 백업받도록 설정한다. 

일단 이정도로 설정한뒤 테스트를 진행하자. 



우선 만약을 대비하여 DB를 내린후 cold 백업을 받아둔다.

rman 으로 접속
rman target /   ('/' 의 의미는 로칼을 의미한다.)



rman을 통하여 데이터베이스와 아카이브 를 전부 백업받는다 (full backup)
backup database plus archivelog;
아래 그림과 같이 백업이 실행된다.



중간중간에 보면 piece handle을 보면 백업셋의 위치가 나온다.





백업이 완료되었다.
컨트롤파일도 자동으로 백업하도록 설정했기때문에 그림의 맨 아래에 보면 컨트롤파일과 spfile을 자동백업한것을 알수 있다.

테스트를 위하여 oradata의 모든 db파일을 삭제한다.
즉 *.ctl , *.log , *.dbf 파일을 다 삭제한다.



DB를 내릴려면 에러가 발생한다.



abort로 DB를 내리고 rman으로 복구작업을 한다.

rman으로 접속하여 DB를 nomount로 올리자 (컨트로파일에 rman백업정보를 저장하는데 없으니 mount로 올라가질 않는다.)


그럼 가장먼저 해야될일은 바로 컨트롤파일을 복원하는 것이다.
아래의 명령을 통해 컨트롤파일을 먼저 복원하자.


oradata폴더에 가보면 컨트롤파일이 복원된것을 알수있다.


컨트롤파일이 있으니 이제 DB를 마운트 단계로 올리자.

이제 데이터베이스를 복원하자.


복원이 완료되면 복구를 해야한다.


복구를 하는중 데이터파일은 복구가 되었지만 로그파일이 유실되어 에러가 난것을 확인할수 있다. resetlogs옵션을 사용하여 DB를 open단계까지 올리자.


oradata폴더에 보면 로그파일도 함께 생성된것을 확인할수 있다.



이제 마지막으로 중요한.... resetlogs로 open을 하였으므로 새로 풀백업을 받아야한다.