DB를 다루는 개발자라면 아래와 같은 경험을 한번쯤 경험해봤을 것이다.
특정조건을 만족할때 특정 컬럼을 변경할때... 혹은 특종조건을 만족할때 해당 로우를 삭제할때
쿼리를 작성한다면 아래와 같을 것이다.
UPDATE TABLE SET C = 1 WHERE NUM = 1;
DELETE FROM TABLE WHERE NUM = 1;
하지만 본인은 어제 술을 엄청먹어서 술도 안깬 상태에서 일은 엄청많다 스트레스도 엄청받고 있는 상태에서
해당 쿼리를 작성할 경우... 한번쯤 실수(?)를 할 수 있지 않을까? 아래와 같이 말이다.
UPDATE TABLE SET C = 1;
DELETE FROM TABLE;
물론 COMMIT을 하지 않았다면 ROLLBACK을 하면 되겠지만...
작성한 쿼리가 문제없는지 확인할세도 없이 다른 업무가 주어져 COMMIT을 해버렸다고 가정하자.
자... 조금 정신차리고 보니까 WHERE절을 주지 않았다... 그때 부터 패틱상태가 되는거다. @.@;
하지만 다행이도 복구할 수 있는 방법이 있다..Oracle FlashBack이라는 기능이다.
FlashBack란 과거의 특정 시점으로 복구시키는 오라클 기능이다.
특정조건을 만족할때 특정 컬럼을 변경할때... 혹은 특종조건을 만족할때 해당 로우를 삭제할때
쿼리를 작성한다면 아래와 같을 것이다.
UPDATE TABLE SET C = 1 WHERE NUM = 1;
DELETE FROM TABLE WHERE NUM = 1;
하지만 본인은 어제 술을 엄청먹어서 술도 안깬 상태에서 일은 엄청많다 스트레스도 엄청받고 있는 상태에서
해당 쿼리를 작성할 경우... 한번쯤 실수(?)를 할 수 있지 않을까? 아래와 같이 말이다.
UPDATE TABLE SET C = 1;
DELETE FROM TABLE;
물론 COMMIT을 하지 않았다면 ROLLBACK을 하면 되겠지만...
작성한 쿼리가 문제없는지 확인할세도 없이 다른 업무가 주어져 COMMIT을 해버렸다고 가정하자.
자... 조금 정신차리고 보니까 WHERE절을 주지 않았다... 그때 부터 패틱상태가 되는거다. @.@;
하지만 다행이도 복구할 수 있는 방법이 있다..Oracle FlashBack이라는 기능이다.
FlashBack란 과거의 특정 시점으로 복구시키는 오라클 기능이다.
FlashBack 사용법을 간단히 정리하면 아래와 같다.
SELECT * FROM TABLE AS OF TIMESTAMP ( SYSTIMESTAMP - INTERVAL '30' MINUTE);
여기서 INTERVAL '30' MINUTE은 30분 이전의 해당 테이블의 데이터를 가져오라는 내용이다.
위 쿼리를 이용하면 실수(?)로 인한 패닉상태를 벗어날 수 있게 된다.
더 자세한 내용은 아래를 참고 하기 바란다.
Oracle Undo log 사용법 및 flash back 사용방법
1258333339_Flashback_query.pdf
참고로 10g의 신기능
'db' 카테고리의 다른 글
MySQL(MariaDB) 사분위수 구하기 (1) | 2014.09.02 |
---|---|
DB 파티셔닝 (0) | 2011.03.07 |
READPAST 그리고 WITH(NOLOCK) (0) | 2009.12.19 |