반응형
나른한 점심시간.
비몽사몽중에 다음과 같은 업무요건가 들어왔다.
A 라는 테이블에서 errcode 가 309 이고 pt_no 가 3 이상인 모든 데이터를 지워라.
sql 로 표현하면 다음과 같은 쿼리가 나온다.
delete from A where errcode = '309' and pt_no >= 3;
commit;
하지만 쿼리를 다음과 같이 잘못 작성한 무대리.
delete from A where pt_no >= 3;
commit;
commit 하고 담배를 피고 와서 select 를 해보니
아뿔사!! pt_no 가 3 이상인 모든 데이터가 지워진 것이다.
commit 까지 했으니 돌릴 방법이 없을 것 같아
조용히 도망치는 무대리!!
하지만 다음 쿼리로 commit 까지 마친 delete 컬럼에 대해서 복구를 할 수 있다.
INSERT INTO A
SELECT *
FROM A
AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '15' MINUTE);
현재 시간 기준으로 15분 이내의 데이터들을 모두 복구하는 쿼리!
멋지다 오라클!
hanho9@nate.com
hanho9@nate.com