Database초보우낙

12. inactive 상태의 redo log file이 삭제 되었을 때 복구 본문

백업과 복구/완전복구

12. inactive 상태의 redo log file이 삭제 되었을 때 복구

오운학 2024. 4. 14. 01:51

 * 리두로그 파일? (redo logfile)

                         

                   다시 작업하다.  다시 작업하기위한 로그 파일입니다.

                   , 복구를 하기 위해서 필요한 데이터가 있는 파일입니다.

 

     select 만 빼고 insert,update, delete, merge, create, alter ,drop, truncate 등의

     명령어들이 이 안에 들어있습니다.

 

 

 

리두로그 파일의 상태 4가지

 

  1. current : LGWR 현재 쓰고 있는 상태
  2. active : LGWR 썻고 내용에 대한 메모리의 변경사항들이 datafile 반영이 안된 상태
  3. inactive : LGWR 내려썻고 메모리의 변경사항이 DATA FILE 반영된 상태
  4. unised : LGWR 한번도 사용하지 않은 상태

 

active 사용하면 불완전복구를 해야하는데 아직 안배워서 날리면 안된다

그림에 나오는 3개의 파일이 순환해서 사용되어지는것

 

 

 

실습

#1. 리두로그 그룹의 상태를 확인

#2. 로그 스위치를 1 일으킨다

#3. 체크포인트를 1 일으킨다

#4. 리두로그 그룹의 상태를 확인

#5. 리두로그 그룹중 inactive 상태인 리두로그그룹의 맴버를 확인

#6. shutdown abort 내린다

#7. os에서 inactive 상태의 로그 그룹 멤버를 rm으로 지운다(active current 지우지 않게 조심!!)

#8. DB startup ( mount에서 멈춘다)

#9. m으로 날린 inactive 상태의 리두로그 그룹을 controlfile에서 지운다

#10. alterdatabase open으로 db 올린다

#11. 지워진 redo log group 새로 추가

 

 

 

◆ 실습 구현

#1. 리두로그 그룹의 상태를 확인

select group#, status, sequence# from v$log;

 

#2. 로그 스위치를 1 일으킨다

alter system switch logfile;

 

#3. 체크포인트를 1 일으킨다

alter system checkpoint;

 

#4. 리두로그 그룹의 상태를 확인

select group#,status,sequence# from v$log;

최대한 current 멀리있는것을 지운다

(지우는사이에 가까운 리두로그그룹의 상태가 CURRENT 변경될 있다)

 

#5. 리두로그 그룹중 inactive 상태인 리두로그그룹의 맴버를 확인

select group#, member from v$logfile;

 

그룹 : 논리적인단위

멤버 : os 눈에 보이는 파일

 

#6. shutdown abort 내린다

shutdown abort

#7. os에서 inactive 상태의 로그 그룹 멤버를 rm으로 지운다(active current 지우지 않게 조심!!)

cd /u01/app/oracle/oradata/Ouh/

rm redo03.log         <-------장애를 일으키기 위해서 지운다

 

#8. DB startup ( mount에서 멈춘다)

startup

--끊겼으면 나갔다가 mount 다시

startup mount

#9. m으로 날린 inactive 상태의 리두로그 그룹을 controlfile에서 지운다

alter database drop logfile group 그룹번호;

alter database drop logfile group 3;

 

#10. alterdatabase open으로 db 올린다

alter database open;

#11. 지워진 redo log group 새로 추가

alter database add logfile group 그룹번호

alter database add logfile group 3 '/u01/app/oracle/oradata/Ouh/redo03.log' size 5m;

select group#, status, sequence# from v$log;