기본적으로 DB는 DBWR가 직접 파일에 변경사항을 쓰기 전, LGWR가 redo log에 할 일을 레코드 단위로 쓴다. 이 레코드는 'redo'와 'undo redo'로 구성된다. 'undo redo'는 'redo'로 바뀐 사항을 다시 undo하기 위해 Redo Log에 쓰는 undo의 redo이다. 즉, 데이터파일의 데이터가 바뀔 때 바뀌기 전후 둘 다를 남긴다.
일반적으로 Redo Log는 정해진 용량만큼의 파일로 써지고, 최근 세 개의 Redo Log만 남긴다. 새로운 Redo Log를 쓸건데 이미 세 개가 있다면 가장 오래전에 쓴 Redo Log를 지우거나 Archive Log 저장 위치로 옮겨준다. 현재 사용중인 세 개의 Redo Log는 V$LOG 등으로 볼 수 있고, Archived Log 저장 위치로 옮겨진 오래된 Redo Log는 Archive Log라고 하며, V$ARCHIVED_LOG로 조회해볼 수 있다. 미리 설정하지 않으면 Archive Log 없이 지우고 운영한다.
undo는 다음 세 가지 1. rollback, 2. tx recovery, 3. CR(consistency read)를 위해 필요하다. 아래 설명은 각각의 예시를 말한다.
d2.naver.com/helloworld/407507