Admin

Flashback query, Flashback Versions Query

돼지와함께춤을 2026. 1. 5. 15:09

Flashback Query는 과거 시점의 데이터를 UNDO를 이용해 SELECT로 조회하는 기능이다.

 

  • Oracle은 DML 전 데이터를 UNDO에 저장
  • Flashback Query는:
    • UNDO를 재조합하여
    • 과거 시점의 SCN / 시간 상태를 재구성

📌 UNDO가 남아 있어야 가능하다, undo는 휘발성 로그이기 때문에 현재 DB 시스템의 UNDO_RETENTION 파라미터 값이 클수록 유리하다.

 

SELECT *
  FROM [테이블] AS OF TIMESTAMP(to_date('2025/03/16 20:32:00','YYYY/MM/DD HH24:MI:SS'))
 WHERE [조건절(필요시)];
 
 혹은 (SCN기반)
 SELECT *
   FROM [테이블] AS OF SCN 123456789
  WHERE [조건절(필요시)];

 

Flashback Versions Query는 특정 기간 동안 데이터가 어떻게 변했는지 조회하는 기능이다.

  • Flashback Version Query는:
    • 시계열로 데이터의 변화 이력 흐름을 볼 수 있으며
    • VERSIONS_OPERATION : I / U / D 로 데이터 DML을 유추
    • VERSIONS_STARTTIME, VERSIONS_ENDTIME 은 선분이력 테이블의 시작일시와 종료일시 개념
select VERSIONS_STARTTIME as "start timestamp of version",
       VERSIONS_ENDTIME   as "end timestamp of version",
       VERSIONS_XID as "transaction ID of version",
       VERSIONS_STARTSCN as "start SCN of version",
       VERSIONS_ENDSCN as "end SCN of version",
       VERSIONS_OPERATION as "DML operation of version".
       a.*
from [테이블] versions between scn minvalue and maxvalue a
where VERSIONS_OPERATION is not null
[조건절(필요시)]
;