기본적으로 DB는 DBWR가 직접 파일에 변경사항을 쓰기 전, LGWR가 redo log에 할 일을 한 레코드 단위로 쓴다. 이 레코드는 redo와 undo redo로 구성된다. undo redo는 redo로 바뀐 사항을 다시 undo하기 위해 redo log에 쓰는 undo의 redo이다. 이는 undo가 꼭 필요하기 때문인데, undo는 다음 세 가지 1. rollback, 2. tx recovery, 3. CR(consistency read)를 위해 필요하다. 아래 설명은 각각의 예시를 말한다.

1. 사용자가 rollback하면 redo 레코드의 redo로 바뀐 부분을, redo 레코드의 undo redo로 되돌린다.

2. DB가 redo를 쓰던 도중에 종료되면 roll forward recovery를 시작한다. 마지막 checkpoint 이후 redo log에 남겨진 내용을 모두 적용시키고, 다시 rollback하여 커밋된 내용만 남긴다.

3. isolation level 중 read committed, repeatable read는 특정 시점의 데이터 블록을 다시 보기 위해 undo를 사용해야한다.

 

참고

d2.naver.com/helloworld/407507

'Oracle DB' 카테고리의 다른 글

알면 좋은 RDBMS 구조 키워드  (0) 2021.07.19
DBMS의 LOB 저장 구조  (0) 2020.04.09
SGA - DB buffer cache  (0) 2019.09.03
SGA - large pool, java pool, fixed SGA  (0) 2019.09.03
SGA - shared pool  (0) 2019.08.31
Posted by sjo200
,