DB를 정상적으로 종료 후 MOUNT 단계까지 실행

recover 필요한 파일 백업
backup database;

list backup;
DB를 OPEN으로 변경

특정 데이터파일 삭제로 장애유발

DB 비정상 종료 후 RMAN 실행

백업정보를 보기 위해 MOUNT 단계까지 실행

백업파일이 있는지 확인
list backup;
가장 최근에 받은 백업본을 restore
restore database;

redo 적용하기
recover database

resetlogs로 DB OPEN
alter database open resetlogs

report need backup

유저 관리로 time base recovery를 할때는 무조건 close 백업을 가지고만 할 수 있었다.
opend backup은 data file과 control file의 scn이 미세하게 달라서 사용할 수 없었다.
하지만 rman을 이용하면 online backup을 받을때도 data file과 control file의 scn 번호가 일치하기 때문에 time base recovery 에도 open bakcup을 사용할 수 있다.
backup database테이블 생성 후 데이터 추가
current한 리두로그 그룹에 저장되어있다.

수동으로 로그스위치 발생
아직 이전 데이터추가한 리두로그는 살아있다.

특정 데이터파일 삭제후 DB를 종료하지만 오류발생으로 세션 종료됨

DB를 다시 MOUNT 단계까지 실행하고 recover file 뷰로 확인

문제 있는 데이터파일을 offline으로 변경 후 DB 를 OPEN 한다.
sqlplus 종료 후 rman으로 접속
report schema로 확인해 봤을때 사이즈가 0인 데이터파일은 물리적으로 데이터파일이 없기 때문이다.

가장 최근에 받아놓은 백업셋 중에서 필요한 데이터파일만 restore
restore tablespace example;

특정 테이블스페이스만 recover 수행
recover tablespace example;

recover 수행한 데이터파일을 online으로 변경 후 schema 확인
alter database datafile 5 online;

- recover한 데이터파일의 사이즈가 다시 복구되어있다.
log siwtch 로 redo 정보 없어짐
특정 데이터파일 삭제로 장애 유발 후 DB 비정상 종료
rman 시작 후 DB MOUNT 단계까지 실행

rman이 가지고 있는 백업정보 확인
rman이 가지고 있는 백업 정보랑 redo가 가지고 있는 시퀀스 번호가 달라 완전 복구가 불가능하다.

불완전한 복구를 하기 위해 전체 데이터파일을 restore

recover database로 불완전한 복구 실행

DB를 resetlogs로 open 하면 된다.

resetlogs로 오픈하면 이전 백업본은 의미가 없기 때문에 삭제해준다.
DB 정상적으로 종료 후 MOUNT 단계까지 실행
RMAN으로 backup database해서 백업본 받기
DB OPEN 후 SYSTEM 파일 삭제
DB 비정상 종료 후 다시 STARTUP 하지만 MOUNT 단계까지만 실행됨
RMAN에서 백업 파일 정보 확인 후 REDO가 살아 있으면 SYSTEM 파일만 RESTORE
restore tablespace system
SYSTEM 파일만 RECOVER 한 후 DB OPEN 하면 된다(완전복구)
recover tablespace system
DB 정상적으로 종료 후 MOUNT 단계까지 실행
RMAN으로 backup database해서 백업본 받기
DB OPEN 후 수동 log switch 발생으로 redo 정보 없어짐
SYSTEM 파일 삭제
DB 비정상 종료 후 다시 STARTUP 하지만 MOUNT 단계까지만 실행됨
RMAN에서 백업 파일 정보 및 REDO 파일 정보 확인해보지만 REDO 정보가 없는걸 알게 되면 불완전 복구로 진행해야 한다.
전체 control file, data file을 resotre
recover database
cancel base recovery로 복구해야한다.
recover database
recover database를 하면 rman에서 자동으로 백업파일이 가지고 있는 scn 번호까지 백업해주는데 내가 수동으로 설정해줄수도 있다.
recover database until scn 특정번호
DB OPNE은 RESETLOGS로 해야하며, 이전 백업파일은 무의미 해졌기 때문에 삭제 하고 다시 백업 받아야 한다.
DB 정상적으로 종료 후 MOUNT 단계까지 실행
shutdown immediate
startup mount
RMAN으로 close backup 받기
rman backup database
DB OPEN 후 작업하다가 특정 데이터파일 및 리두로그파일 삭제로 인한 장애유발
DB 비정상 종료 후 RMAN으로 DB를 MOUNT 단계까지 실행
shutdown abort
rman startup mount
가장 최근에 백업받은 파일 확인 후 불완전 복구를 시도해야 한다.
rman list backup;
전체 백업파일 restore
restore database;
백업 받은 시점의 scn까지 recover 수행하기
rman recover database until scn 특정번호;
불완전 복구 하였으니 DB OPEN 도 RESETLOGS로 해야한다.
rman ALTER DATABASE OPEN RESETLOGS;
RESETLOGS로 OPEN 하였으니 다시 RMAN 으로 백업 받아놓아야 한다.
control file 삭제로 장애유발
DB 비정상 종료 후 alert log 파일에서 최근 백업 컨트롤파일 위치 확인
- gg : 커서 위치를 제일 앞으로
- G로 가장 아래로 이동
- / autobackup : 커서위치를 기준으로 아래 방향으로 검색
- ? autobackup: 커서위치를 기준으로 위 방향으로 검색
- n 검색어 뒤로 이동
- N 검색어 앞으로 이동
- :noh : 검색어 블록 제거
2024-09-12T14:04:17.185274+09:00
Control autobackup written to DISK device
handle '/u01/app/oracle/fast_recovery_area/ORA19C/autobackup/2024_09_12/o1_mf_s_1179497000_mg4xlk54_.bkp'
rman으로 접속 후 db를 nomount 단계까지 실행
rman startup nomount
백업 받은 컨트롤 파일을 restore 하기
restore controlfile from '/u01/app/oracle/fast_recovery_area/ORA19C/autobackup/2024_09_12/o1_mf_s_1179497000_mg4xlk54_.bkp';
restore 받은 컨트롤 파일로 mount 단계까지 실행
rman alter database mount
백업 컨트롤 파일이 가지고 있는 백업 데이터파일을 확인 후 백업 데이터파일을 전부 restore 해야야한다.(불완전 복구)
rman restore database;

불완전 복구로 recover 해주면 된다.
rman recover database until scn 번호;

불완전 복구로 recover 하였기 때문에 db open도 resetlogs로 오픈한다.
rman alter database open resetlogs
resetlogs로 db를 오픈하여 resetlogs id로 달라졌기 때문에 이전 백업본은 삭제 후 다시 백업본을 받아야 한다.
spfile로 pfile 생성
전체 파일 삭제

새롭게 restore 해야할 디렉터리 생성
pfile의 컨트롤파일 위치를 새롭게 생성한 디렉터리로 변경

alert log를 통해서 가장 최근에 백업받은 control file 위치 찾기
2024-09-12T16:24:36.900624+09:00
Control autobackup written to DISK device
handle '/u01/app/oracle/fast_recovery_area/ORA19C/autobackup/2024_09_12/o1_mf_s_1179505428_mg55snvd_.bkp'
rman 으로 접속후 pfile을 이용해 nomount 단계 까지만 실행
rman을 이용해서 control file을 restore
- restore 위치는 초기파라미터 파일에 등록되어있는 control file의 위치로 해준다.
restore controlfile from '/u01/app/oracle/fast_recovery_area/ORA19C/autobackup/2024_09_12/o1_mf_s_1179500480_mg50yokh_.bkp';
restore 한 컨트롤 파일로 mount 단계까지 실행
report schema 로 확인
control파일이 가지고 있는 파일들의 위치정보 변경
- 스크립트 형식으로 정보변경
run{
sql "alter database rename file ''/u01/app/oracle/oradata/ORA19C/redo01.log'' to ''/home/oracle/oradata/redo01.log''";
sql "alter database rename file ''/u01/app/oracle/oradata/ORA19C/redo02.log'' to ''/home/oracle/oradata/redo02.log''";
sql "alter database rename file ''/u01/app/oracle/oradata/ORA19C/redo03.log'' to ''/home/oracle/oradata/redo03.log''";
set newname for datafile 1 to '/home/oracle/oradata/system01.dbf';
set newname for datafile 2 to '/home/oracle/oradata/undotbs01.dbf';
set newname for datafile 3 to '/home/oracle/oradata/sysaux01.dbf';
set newname for datafile 5 to '/home/oracle/oradata/example01.dbf';
set newname for datafile 7 to '/home/oracle/oradata/users01.dbf';
set newname for tempfile 1 to '/home/oracle/oradata/temp01.dbf';
restore database;
switch datafile all;
switch tempfile all;
recover database;
alter database open resetlogs;}
DB를 정상적으로 종료
control file을 삭제해서 장애유발
RMAN으로 DB nomount 단계까지 실행 후 가장 최근에 백업받은 control file을 찾아 restore 해야한다.
restore controlfile from '/u01/app/oracle/fast_recovery_area/ORA19C/autobackup/2024_09_12/o1_mf_s_1179511484_mg5cpnyn_.bkp';
DB를 MOUNT 단계까지 실행
ALTER DATABASE MOUNT;
control file만 백업본이고 data file과 redo log file은 정상적으로 존재하기 때문에 control file을 재생성 해주는게 좋다.
sql "alter database backup controlfile to trace as ''/home/oracle/create_control2.sql''";STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORA19C" NORESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/u01/app/oracle/oradata/ORA19C/redo01.log' SIZE 200M BLOCKSIZE 512,
GROUP 2 '/u01/app/oracle/oradata/ORA19C/redo02.log' SIZE 200M BLOCKSIZE 512,
GROUP 3 '/u01/app/oracle/oradata/ORA19C/redo03.log' SIZE 200M BLOCKSIZE 512
DATAFILE
'/u01/app/oracle/oradata/ORA19C/system01.dbf',
'/u01/app/oracle/oradata/ORA19C/undotbs01.dbf',
'/u01/app/oracle/oradata/ORA19C/sysaux01.dbf',
'/u01/app/oracle/oradata/ORA19C/example01.dbf',
'/u01/app/oracle/oradata/ORA19C/users01.dbf'
CHARACTER SET AL32UTF8
;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
ALTER DATABASE OPEN;
ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/ORA19C/temp01.dbf' REUSE;