03 Recovery 원리
Oracle Startup 과정
no mount server process 가 parameter file (pfile /spfile) 을 PGA 로 읽어 들여서 해당 parameter file 에서 지정한 대로 instance 를 생성하는 단계
mount parameter file 에 기록되어 있는 위치에서 control file 을 읽어서 장애를 복구하거나,
유지관리작업 (rename file, drop file) 등의 작업을 하는 단계
1. CKPT process 가 모든 control file 을 읽고 일시적으로 lock 을 설정
2. control file header 정보를 검증해서 control file 에 이상이 없는지 확인하고, mountID 를 계산해서 control file 에 저장
3. parameter file 의 database name 과 control file 의 DB name 이 동일한지 검사
4. 위 과정까지 이상이 없으면 alert log file 에 "Sucessful mount of redo Thread" , "Database mounted" 라는 메시지 기록
open Data file header 부분의 정보와 control file 의 정보를 서로 비교해서 장애 유무를 판단 (Checkpoint SCN 정보 확인)
Recovery 원리
SQL> oradebug setmypid ;
SQL> oradebug dump controlf 3 ;
SQL> !
$ pwd
/home/oracle/admin/testdb/udump/testdb_ora_19226.trc
$ ls
testdb_ora_19226.trc
$ vi
...
DB NAME "TESTDB"
...
Database checkpoint: Thread=1 scn: 0x0000.001720d1 ← DB 전체의 checkpoint
...
Checkpointed at scn: 0x0000......
...
Low scn: 0x.0000...
Next scn: 0x0000...
...
Checkpoint cnt: 333 scn: 0x0000...
Stop scn: 0xffff.ffffffff 02/27/2010 08:20:32 ← ffff 란 현재 사용중이란 의미
오라클은 DB 가 open 상태이면 Stop scn 을 무한대 (0xffff.ffffffff) 로 설정하고 DB 가 종료되거나 offline 되면
checkpoint 를 발생시켜 checkpoint scn 과 stop scn 을 동일하게 만들고 해당 데이터 파일을 닫습니다.
정상적으로 종료된 파일은 Checkpoint scn 과 Stop scn 이 동일합니다.
이 원리를 이용해 데이터 파일의 이상 유무를 확인하는 것입니다.
control file 의 SCN 정보와 data file 의 SCN 정보를 비교해서 차이나는 부분을
Redo log file 이나 Archive log file 에서 찾아서 복구한다.
Crash Recovery Instance Recovery 라고도 하는데 운영 중이던 Database 가 비정상적으로 종료된 것을 의미합니다.
startup 시에 automatically 하게 recovery 하는 것을 의미하며 online Redo log file 만 사용됩니다.
Media Recovery file 삭제나 disk fail 등의 이유로 Instance Recovery 가 실패할 경우 DBA 가 수동으로 백업 파일 등을 복원한 후
Online Redo log file 과 archived redo log file 등을 사용하여 recovery 해야 하는데 이것을 Media Recovery 라고 합니다.