본문 바로가기
개발하는 '정'/DB

ORACLE 과거 데이터 조회, 복구 (백업)

by 주앤정_블로그 2023. 11. 1.

ORACLE 과거 데이터 조회, 복구 (백업)

 

백업 데이터가 없는데 복구해야할 때, TIMESTAMP를 사용하여 과거 데이터를 조회할 수 있다.

 

사용법
//특정 시점의 데이터 조회
select *
from tmpA AS OF TIMESTAMP TO_TIMESTAMP('20001231 123010','YYYYMMDD HH24MISS') //2000년 12월 31일 12시 30분 10초
;


//특정 시간 전 데이터 조회
select *
from tmpA AS OF TIMESTAMP TIMESTAMP(SYSTIMESTAMP-INTERVAL '10' day) //10일 전
;
select *
from tmpA AS OF TIMESTAMP TIMESTAMP(SYSTIMESTAMP-INTERVAL '10' hour) //10시간 전
;
select *
from tmpA AS OF TIMESTAMP TIMESTAMP(SYSTIMESTAMP-INTERVAL '10' minute) //10분 전
;
select *
from tmpA AS OF TIMESTAMP TIMESTAMP(SYSTIMESTAMP-INTERVAL '10' second) //10초 전
;

TO_TIMESTAMP와 함께 사용하여 특정 시점의 데이터를 조회할 수도 있고

SYSTIMESTAMP를 이용해 지금 시각으로부터 N분전 데이터를 조회할 수도 있다.

후자는 현재 시간이 흐름에 따라 쿼리를 계속 바꿔줘야해서, 개인적으로는 특정 시점을 지정하여 데이터를 조회하는 것을 추천한다.

 

 

 

사용 예시

ORACLE 과거 데이터 조회

이메일 발송 내역을 저장하는 로그 테이블이 있다.

자세히 보면 SEQ가 4번에서 끊겼다가, 8번으로 다시 시작한다.

즉, 10월 5일 14시 40분에서 17시 21분 사이에 5번,6번,7번 데이터가 삭제되었음을 유추해볼 수 있다.

 

 

ORACLE 과거 데이터 조회 TO_TIMESTAMP

17시 정각에 5번~7번 데이터가 존재함을 확인할 수 있었다.

노가다를 해야하지만... 시간을 조정해나가면 삭제된 정확한 시간을 초단위로 알아낼 수 있다.

 

 

 

ORACLE 과거 데이터 조회

현재 시각은 2023년 11월 1일 14시 35분이다.

30분전(14시 5분) 데이터를 조회하면, 14시 26분에 등록된 13번 데이터는 조회되지 않는다.

 

 

ORACLE 과거 데이터 조회 SYSTIMESTAMP

현재 시각에서 30분 전 데이터는 TIMESTAMP(SYSTIMESTAMP-INTERVAL '30' MINUTE) 구문을 사용하여 조회하였다.

 

해당 SELECT문으로 과거 데이터를 insert하거나, 과거 데이터로 update하거나, 백업 테이블을 만들(create table ... as ...) 수도 있다.

얼마나 과거까지 조회해볼 수 있는지는 db설정 및 성능에 따라 상이하다.

 

 

끝.

 

 

 

반응형

 

 

반응형

댓글