Database초보우낙

30. Rman을 사용해서 모든 control file 삭제 후 복구 본문

백업과 복구/백업과 복구(Rman)

30. Rman을 사용해서 모든 control file 삭제 후 복구

오운학 2024. 4. 15. 22:41

장애 상황 시나리오

 

현장에서의 경험

테이블 스페이스에 공간을 추가할 무리하게 여러 개의 DATA FILE 한번에 넣어서 추가를 하게 되면 controlfile 깨지는 현상이 발생할 확률이 높다

 

 

 

실습

#1. 현재 database db id 조회

#2. 컨트롤 파일을 생성하는 스크립트를 생성

#3. Rman으로 접속해서 control file 자동백업되도록 설정

#4. Rman 에서 Datafile중에 아무거나 하나를 백업

#5. control 직접 Rman으로 백업

#6. controlfile 위치를 확인

#7. shutdown abort

#8. 모든 controlfile 전부 삭제

#9. startup

#10. shutdown abort

#11. startup mount

#12. Rman으로 접속

#13. control file Rman으로 복원

#14. alter database mount 올린다

#15. recover database 수행

#16. db open으로 올린다

 

구현

#1. 현재 database db id 조회

방법1 . sql 구문으로 확인 방법2. Rman으로 접속할때 확인
select dbid
from v$database;


1573656506

#2. 컨트롤 파일을 생성하는 스크립트를 생성

alter database backup controlfile to trace as '/home/oracle/create_controlfile_20240307.sql';

 

#3. Rman으로 접속해서 control file 자동백업되도록 설정

rman target sys/oracle nocatalog

 

configure controlfile autobackup on;

 

설명 : Rman으로 앞으로 어떤 파일을 백업 받던 백업 받을때 마다 controlfile 자동백업이 되어진다

 위와 같이 설정을 해놓으면 앞으로 DB 구조가 변경될때마다 Rman 컨트롤 파일을 자동으로
 
백업한다

 

 

#4. Rman 에서 Datafile중에 아무거나 하나를 백업

 

backup datafile 1;

컨트롤 파일을 자동으로 백업했다

 

 

#5. control 직접 Rman으로 백업

backup current controlfile;

 

 

#6. controlfile 위치를 확인

@controlfile

 

#7. shutdown abort

#8. 모든 controlfile 전부 삭제

oradata

rm *.ctl

 

#9. startup

 

#10. shutdown abort

#11. startup nomount

 

#12. Rman으로 접속

 

 

주로 지금까지 mount 상태에서 Rman으로 접속했다

복구는 항상 mount 상태에서 진행해야하기 때문이다

그런데 위와 같이 nomount 상태에서도 Rman으로 접속할 있다

 

#13. control file Rman으로 복원

list backup of controlfile;     <---mount 상태일때만 확인가능(현재는 nomount 상태)

 

restore controlfile from autobackup;

 

자동으로 복구했다 3개의 파일을!

 

#14. alter database mount 올린다

 

alter database mount;

 

설명 :

control file 복원했다고 바로 mount 되는건 아니다. 따로 mount시켜줘야한다

 

#15. recover database 수행

 

recover database;

 

설명:

복원한 controlfile 옛날 파일이기 때문에 복구를 해서 최신파일로 만들어줘야한다.

 

 

#16. db resetlogs 사용하여 open으로 올린다

alter database open resetlogs;

 

 

설명 :

controlfile 복구한다는것은 교실로치면 그만둔 선생님이 다시 왔다. 수업진도를 다시 맞춰야한다

 

복구 : 그만둔 선생님이 돌아 왔다.

resetlogs : 수업진도를 다시 맞춰야한다

 

#17. resetlogs DB 열었으면 반드시 full backup 수행해야한다

backup database;


문제1. (이수자평가 5)

control file 3개중에서 2개를 삭제하고 Rman으로 복구하세요

 

  1. shutdown 후에 파일 지우기 -> startup

 

 

 

 

  1. shutdown abort -> startup nomount

 

  1. Rman으로 접속

 

  1. control file Rman으로 복원

restore controlfile from autobackup;

 

 

 

 

 

 

list backup of controlfile;

 

select name from v$controlfile;