ORACLE/Back & Recovery

1장 Recover 원리

히드라야 2015. 4. 13. 11:34



출처: 서진수 강사님 oracle 취업 강좌, oracle백업 과 복구 교재. oracle concepts 문서


 startup 과정 이해 

① nomount  실행시 parameter File 확인 Instance 생성

② mount 실행시 Control File ↔ parameter File 확인

③ open  실행시 Control File   Data File , Redo log File 확인

 Recover 순서

    ① 백업 받은 파일을 복사한다 → Restore (복원)

② 백업받은 파일의 Log를 확인해서 가장 최신의 Log 상태까지를 확인해서 시간의 순서대로 복구한다. 

※ Log 를 찾는 절차  

 control 파일의 chckpoint SCN(기록되어있는), Data File SCN(실제 저장된) 비교 다르면

      online redo logfile 확인, archive 확인 후에 복구를 실시한다. 

       


□ control 파일 (Data file 정보 부분)  

① Commit SCN     : 여러사용자가 명령한 Commit 중에서 가장 마지막 Commit 

② check Point CNT : 테이블 스페이스 별로 내러쓴 횟수  (고유번호)

③ check Point SCN : 지금 까지 한것을 commit 시 disk에 저장 (이때 지정되는 SCN) ★★ (지역번호)

      번호가 같아야지 mount 상태에서 open이 가능함 

④ Stop SCN  :  현재 작업 중  되는것 중 마지막 추가될  SCN (값을 모르기 때문에 무한대로 설정됨) 


 Checkpoint cnt:537 scn: 0x0000.0022fa93 04/13/2015 04:01:01

 Stop scn: 0xffff.ffffffff 04/07/2015 11:04:01


※SCN: System Change Number 



[Control File 덤프뜨는법]



[Data Fie header 덤프 뜨는법]





□ Mount 단계에서 Open 단계 (복구 단계)


 ◎ 과정 (instance recovery)



   정상 종료: check Point SCN 과 Stop SCN을 동기화를 만들어 주고 데이터 파일을 닫음  

   비정상 종료: check Point SCN 과 Stop SCN이 다름(Instance Crash) 

            → mount 단계에서 datafile을 open 시에 SMON이 control file을 복구를 해줌 

           → (그러나)datafile Checkpoint SCN ↔ Control File Stop SCN 비교  정상인 경우 open 

            → (비정상인 경우) 필요한 가장 낮은 SCN을 찾으로 Control file 안에 Log File Record를 찾아감 

           → datafile이 필요한 SCN을 redo log file 에 Low scn을 확인 후 찾음 

            → 가장 낮은 SCN 부터 순서대로 Roll Forward

       → commit 안된 Transction을 undosegment를 확인해서 Roll Backward


※  instance Recovery 가 작동하지 않는 경우 Control file Stop Scn 과 Data file Scn확인 

    차이나는 부분을 Redo log file & archive log File 찾아 복구한다 (Media Recovery)


 종류

Crash Recovery(Instance Recovery) : online Redo Log File을 사용해서 SMON이 복구한다 

★★ Media Recovery : Instance Recovery가 실패 하는 경우 DBA가 수동으로 실행


◎ Instance Recovery 설명

 ※ 그림에서도 보여주듯이 Redo log를 확인해서 instance를 복구함 



◎ Instance Recovery 설명


① 1 차적으로 redo log를 확용해서 데이터를 복구 한다음

② undo segment를 통해서 commit 안된 데이터들을 Rollback 해주어서 고장이 나기 전으로 돌아감