DB
[Oracle]삭제 데이터 복구하기
까오기
2020. 4. 2. 14:29
"혹시 삭제한 데이터 다시 살릴 수 있나요?"
이런 연락을 가끔 받습니다.
오라클을 사용하고 삭제된지 얼마 안된 경우 간단하게 복구를 할 수 있습니다.
먼저 어느 정도 시간 까지 복구 가능한지 확인을 해야 합니다.
sql> show parameter undo;
NAME TYPE VALUE
--------------- ------- --------
undo_management string AUTO
undo_retention integer 1800
undo_tablespace string UNDOTBS1
위의 경우 undo_retention 값이 1800으로 되어 있는 것을 확인할 수 있습니다.
1800/60초 = 30분
commit된지 30분 이내 실행 된 것이라면 아직 오라클에 남아 있어 복구가 가능하다는 것입니다.
해당 시간을 조정할려면 아래 처럼 하면됩니다.
alter system set undo_retention = [원하는시간(초)] ;
삭제된 데이터 조회
SELECT * FROM [테이블명] AS TIMESTAMP(SYSTIMESTAMP-INTERVAL '[시간]' [단위, SECOND/MINUTE/HOUR/DAY]) WHERE 조건
-- 예제
SELECT * FROM USER AS TIMESTAMP(SYSTIMESTAMP-INTERVAL '25' MINUTE) WHERE STAT='Y'
-- 25분전 USER테이블 데이터 조회
복구 예제
INSERT INTO USER
SELECT * FROM USER OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '25' MINUTE) WHERE STAT = 'Y'
만약 삭제 후 새로운 데이터가 삽입 된 경우 충돌이 날 수 있습니다.
필요시 조건을 추가 하거나 새로운 데이터를 삭제해야 할 수 있습니다.
여러가지 문제로 완벽하게 복구할 수 없을 지 모르지만 그래도 급할 때는 유용합니다.