Flashback

데이터베이스 객체의 과거 상태를 보거나 이전 상태로 되돌릴 수 있게 해주는 기술.

※ Flashback Query(SELECT AS OF 사용)

과거 시점의 데이터를 검색하기 위한 쿼리이며(읽기 전용), 타임스탬프(TIMESTAMP) 또는 시스템 변경 번호(SCN)를 통해 조회함.

Flashback Query는 Undo에 저장된 트랜잭션의 Start SCN과 Commit SCN 사이의 정보를 따라가며 재구성

▶️ 내부 구조 흐름

  1. 트랜잭션 수행 간, Undo를 통해 이전의 값을 유지
  2. Flashback Query를 통해 UndoTable space에 저장된 Undo를 이용해 “당시의 상태’를 재구성
  3. SELECT 실행 시, 백그라운드에서 Undo record chain을 따라가며 재구성

▶️ Undo 정보 부족으로 인한 ORA-01555: snapshot too old

  1. Undo Retention 기간 초과

Undo는 undo_retention 설정만큼 보존 되지만, 공간이 부족하면 overwrite 될 수 있음. (Undo Tablespace의 강제 보존 모드에 따라 될 수 있음)

Undo 정보가 이미 overwrite되어 존재하지 않기 때문에 과거 snapshot 상태로 재구성 할 수 없음.

undo_retention 시간을 늘리거나, 장기 보존이 필요 시 Flashback Data Archive(FDA) 사용

  1. Undo chain이 깨짐