개발은 너무해

데이터 삭제로 인한 복구(flashback) 본문

Oracle/Oracle Recovery

데이터 삭제로 인한 복구(flashback)

까칠 평생초보 2011.02.11 17:29
요즘 나태해지고 자만심으로 인하여 큰 화를 부르게 되었다.
대용량 테이블의 2월7일이후 데이터를 삭제한다는 것이 1월7일이후 데이터를 삭제하고 말았다.

데이터 복구 할려고 처음부터 배치작업을 하게 되었고, 시간과 기존데이터와 맞지않아 또 다시 돌리고 검증하고..
한마디로 개고생을 했다.

배치를 처음부터 돌리기 전에 지식인에 물어봐서 flashback이라는 것을 알게 되었다.
아래와 같이 명령어를 실행을 시켰다. 그러나 워낙 큰 대용량이라서 끝날 기미가 보이지가 않았다.
그래서 취소를 시키고 롤백하는데도 엄청난 시간이 걸렸다.
이작업을 포기하고 배치를 처음부터 돌리기 시작하였던 것이다.

insert /*+parallel(a,8)*/ into temp_pgheo_delete_table  a
select /*+parallel(delete_table ,8)*/*
from delete_table as of timestamp(systimestamp - interval '20' minute);

이후(7시간 후가 되겠다) 다시 돌린 데이터가 작업시간 및 데이터 싱크가 맞질않아 또 다시 몇시간을 소비하게 되었고,
다시 flashback에 대해서 눈이 가기 시작하였다.

결론부터 말하면 아래명령어로 복구를 하였다. 똑같은 쿼리지만 where 을 추가하였다.
이런 단순한 생각을 못했다는게 안타까울따름이다.

alter session enable parallel dml;

insert /*+parallel(a,8)*/ into temp_pgheo_delete_table  a
select /*+parallel(delete_table ,8)*/*
from delete_table as of timestamp(systimestamp - interval '7' hour) 
where date >= '20110107' and date <= '20110109';

commit;

insert into delete_table  select * from temp_pgheo_delete_table;

복구를 완료하였다.

오늘 하루 지옥과 천당을 수천번 왔다갔다한 기분이다.

0 Comments
댓글쓰기 폼