Redo vs Undo

devkwon·2024년 7월 30일
0

Oracle

목록 보기
2/3

redo와 undo 둘다 복구를 하는 것인데 정확히 무슨 차이점이 있을까?

Redo

데이터의 변경 기록을 기록한 것.

복구를 할 때, 사용자가 했던 작업을 그대로 한다. (roll-forward)

db의 변경 사항을 복구하거나 시스템 장애로 인해 생긴 예기치 않은 종료에 의한 복구를 위해 사용한다.

Redo 구조

  1. 서버 프로세스가 REDO 로그 버퍼에 REDO 로그를 넣는다.
  2. LGWR 프로세스는 서버 프로세스의 의뢰를 받거나, 자발적으로 REDO 로그 버퍼에 있는 REDO로그를 REDO 로그 파일에 기록함
  3. ARCH 프로세스가 아카이브 REDO 로그파일로 옮긴다.

REDO Log Buffer는 SGA에 존재한다. LGWR를 통해 REDO 로그를 디스크에 기록한다.
REDO 로그 파일은 크기와 개수가 한정되어 있는 일시적인 창고이다. 만약 오래 보관해야하는 경우라면 아카이브 REDO 로그 파일에 저장해야 한다.

Undo

과거의 상태로 돌아갈 수 있는지에 관한 정보

사용자가 했던 작업의 반대로 진행하여 복구를 한다.(roll-back)

트랜잭션 롤백이나 read consistency를 위해 사용한다.

Undo 구조

데이터가 변경되면, UNDO 정보가 생성되고, 이 정보는 undo segment에 저장이 된다.
undo segment는 ring buffer로 구현되어 있어, 일정 데이터가 넘어가면 이전 데이터에 새로운 데이터를 덮어 쓰기 때문에 이전 데이터가 소실될 수 있다. 따라서 시간이 오래 걸렸거나 이미 변경이 많이 일어나서 사라진 데이터를 다시 보려다가 ORA-1555( snapshot too old ) 오류를 볼 수 있다.

0개의 댓글