반응형

오라클에서 삭제나 수정된 데이터를 복구할 수 있을까? DB 운영을 하다 보면 실수로 쿼리를 잘못 날렸을 때나 현업의 요청에 의해서 과거 데이터를 되살려야 할 때가 있습니다. 이때 사용할 수 있는 오라클의 기능이 있는데 바로 타임스탬프(TIMESTAMP)입니다. 단, 오래된 데이터는 복구가 어려울 수 있으니 최대한 빨리 처리하는 것이 좋습니다.

 

오라클 9i 부터 Flashback이라는 기능이 생겨서 아주 쉽게 데이터를 복구할 수 있게 되었습니다. 설정해 놓은 Flashback 사이즈만큼의 과거 데이터를 오라클은 갖고 있기 때문에 수정이 자주 이루어지는 테이블은 복구 가능 시점이 짧을 수 있습니다. 사용방법은 아래와 같습니다.

 

 SELECT * 
   FROM 테이블명 AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '5' MINUTE)

 

테이블 뒤에 AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '5' MINUTE) 구문을 붙여 주면 된다. INTERVAL 뒤에 원하는 시점을 적어주면 됩니다. 위 쿼리를 실행해보면 해당 테이블의 5분전 시점의 데이터가 조회되는 것을 확인할 수 있습니다.

 

 

단위는 SECOND, MINUTE, HOUR, DAY로 바꿔서 쓸 수 있습니다. 아래처럼 특정 시점을 명시할 수도 있습니다.

 

 SELECT * 
   FROM 테이블명 AS OF TIMESTAMP(TO_DATE('2022-06-19 04:10:00', 'YYYY-MM-DD HH24:MI:SS'))

 

단, INTERVAL을 너무 크게 지정하면 아래와 같은 에러가 발생합니다. 그럴 경우 INTERVAL을 조금씩 줄여가면서 실행해 보시면 됩니다.

 

 

 

 

 

반응형

+ Recent posts