RDB/Oracle

[오라클]timestamp를 활용한 데이터 복구

창문닦이 2019. 6. 10. 17:37

DB 작업 중 실수로 데이터를 삭제한 후 Commit을 진행했다. 다행히 오라클에서는 Commit후 복구할 수 있는 방법이 존재한다. 
오라클은 Undo Tablespace에 커밋이후로부터 일정시간동안 임시로 테이블을 저장하고 있다. 유지되는 시간은 undo table 속성에 지정가능하다. 시스템 설정에 따라 복구할 수 있는 시간이 다르므로 확인해야한다.

커밋 후 특정시간 전 데이터를 보고 싶다면  as of timestamp 를 이용하면 된다. 
단위는 SECOND, MINUTE, HOUR, DAY가 가능하다.

select * from 테이블명 as of timestamp(systimestamp-interval '30' minute);

 

DB복구로 사용한 쿼리

insert into codilist
(select * from codilist as of timestamp(systimestamp-interval '30' minute) where iNum>20);

insert into codiheart
(select * from codiheart as of timestamp(systimestamp-interval '30' minute) where iNum>20);

insert into hashtag
(select * from hashtag as of timestamp(systimestamp-interval '30' minute) where iNum>20);