Transcript redolog의_이해
Redo log file Redo logfile과 관련해서 logfile, control file, datafile에 자료가 어떻게 들어가는지 봅시다. 작성 : 구영훈 1) Data(A) 가 insert되어서 redolog buffer에 선저장됨, 이후에 DB Cache에도 저장 (이해를 돕기위해 여기에서 undo segment 단계는 생략합니다. DB Cache Redo log buffer 1) A 1) A DBWR datafile CKPT Log group 1 Log group 2 Log file(group)의 상태 3가지 Control file Log group 3 Current : 현재 사용중 ( Pinned buffer와 유사 ) Active : 사용중은 아닌데 logfile안의 내용이 datafile에 저장이 안 된 상태 ( Dirty buffer와 유사 ) Inactive : 내용이 완전히 저장까지 된 상태 ( Free buffer와 유사) 2) 조건이 만족해서(commit, 1/3full, 3초, 등등) LGWR이 log buffer의 내용을 첫번째 log file에 저장함(SCN까지 저장됨) 또 LGWR이 control file에 SCN을 기록 DB Cache Redo log buffer 1) A DBWR 2) 조건만족(commit, 3초, 1/3) LGWR datafile 1 Control file CKPT 2) A, SCN# : 1 Log group 1 : Current (사용중) Log group 2 Log group 3 ………… SCN(System Commit Number) ; 사용자가 실행했던 명령어를 찾기쉽게(나중에 복구를 위해서) 번호를 지정한 것, 명령어마다 번호가 붙지 않고 Transaction단 위로 번호가 매겨진다. 3) Log switch가 일어남 DB Cache Redo log buffer 1) A DBWR 3) Log switch datafile 1 Control file CKPT ………… 2) A, SCN# : 1 Log group 1 (log switch가 발생 후) Active Log group 2 Log group 3 (log switch가 발생 후) Current 4) Log switch가 발생하면 CKPT가 log switch를 감지하여 1) control file에 checkpoint SCN을 기록 2) DBWR에게 checkpoint SCN을 알려줌 DB Cache 이후 checkpoint발생 후 datafile에 저장함 Redo log buffer Checkpoint SCN을 자료 맨앞에 추가하고 자료들 을 datafile에 저장 1) A Checkpoint발생 후 DBWR (checkpoint발생 후) 4) Ckeckpoint SCN을 DBWR에게 알려줌 1A CKPT datafile 4) Ckeckpoint SCN을 control file에 기록 1 Log switch 감지 1 Control file … …… 3) Log switch 2) A, SCN# : 1 Log group 1 Log group 2 Log group 3 Inactive : checkpoint가 발생하여 해당 내용이 datafile에 저장되었을시 Active : 아직 datafile에 log파일의 내용이 저 장 안되었을 떄 Checkpoint SCN : 마지막 SCN으로 이 checkpoint SCN 만 알면 어디까지 저장할지 알 수 있다. DBWR에게 checkpoint SCN을 알려만 주는 이유 : DBWR 이 바쁠 수 있어서 나중에 천천히 저장하라고. 5) 새로운 자료(B) 가 들어오고 조건이 만족해서(commit, 1/3full, 3초, 등등) 현재 current인 log group file에 해당 내용 저장됨(SCN까지), 또한 control file에도 LGWR이 해당 SCN기록 DB Cache Redo log buffer 5) B 5) B (log file에 내려쓰고는 지워짐) DBWR 조건만족(commit, 3초, 1/3,) LGWR 5) B, SCN# : 2 1A CKPT datafile 2 1 Control file … …… Log group 1 Log group 2 Current Log group 3 6) Log switch 발생 DB Cache Redo log buffer 5) B DBWR 6) Log switch 5) B, SCN# : 2 1A CKPT datafile 2 1 Control file … …… Log group 1 Log group 2 (log switch가 발생 후) Active Log group 3 (log switch가 발생 후) Current 7) CKPT가 log switch감지하여 1) 2) DBWR에게 checkpoint SCN통보 Control파일에 checkpoint SCN기록 DB Cache Redo log buffer 5) B DBWR 앗! Log switch다! 6) Log switch Checkpoint SCN 5) B, SCN# : 2 1A CKPT datafile Checkpoint SCN 2 2 Control file … …… Log group 1 Log group 2 (log switch가 발생 후) Active Log group 3 (log switch가 발생 후) Current 8) 이후 checkpoint가 발생하게 되면 DB cache이 내용을 checkpoint SCN을 포 함해서 datafile에 저장 DB Cache Redo log buffer Checkpoint 발생 DBWR 5) B, SCN# : 2 2AB CKPT datafile 2 2 Control file … …… Log group 1 Log group 2 (checkpoint발생 후) Inactive Log group 3 Current 이러한 방식으로 log switch 가 일어나고 control file과 datafile이 변경됨