Oracle FlashBack

db 2011.04.05 22:14
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란 과거의 특정 시점으로 복구시키는 오라클 기능이다.

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의 신기능

  1258333339_10g_r2의_신기능.pdf



저작자 표시
신고

'db' 카테고리의 다른 글

MySQL(MariaDB) 사분위수 구하기  (0) 2014.09.02
Oracle FlashBack  (0) 2011.04.05
DB 파티셔닝  (0) 2011.03.07
READPAST 그리고 WITH(NOLOCK)  (0) 2009.12.19

WRITTEN BY
빵군
Web Programmer HOONS닷넷(http://www.hoons.kr) 2011 ASP.NET 시삽 http://about.me/y2kpooh

받은 트랙백이 없고 , 댓글이 없습니다.
secret