본문 바로가기

티끌팁

[SQL QUERY] 데이터복구 쿼리

반응형

sql query 에서 delete 명령을 했는데, 명령을 잘못내려 언뚱한 데이터가 삭제되는 경우가 있다. 

 

이런 경우에는 얼굴이 하얗게.질리고 아무 생각도 안나는데 땀만 난다.

 

이런 당황스러운 경험을 한 적이 있기에 해당 쿼리를 남겨 둔다.

 

데이터복구쿼리

 

방법은 간단하지만 잘 활용하면 원하는데로 변형이 가능하다.

 

 - 기본 구문은 

SELECT * 
   FROM 복구대상테이블 
   AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '1' HOUR)

;

 

인데, 여기에 있는 HOUR 부분은 MINUTE 로도 변경이 가능하다. 

SELECT * 
   FROM 복구대상테이블 
   AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '10' MINUTE)

;

 

여기에 더해 정확한 내용을 찾으려면 DELETE문에서 사용했던 WHERE 절을 가져와서 함께 사용하면 더 편리하다.

 

SELECT * 
   FROM 복구대상테이블 
   AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '1' HOUR)

WHERE ...

;

 

간단하지만 많이 잊어버리는 구문이다.

많이 안쓰면 잊어버린다.

 

처음에는 정말 많이 사용하게 될지도 모른다.

 

나중에는 이 구문으로 살리면 되니까 걱정을 별로 안하게 된다.