DELETE를 잘못사용하여 삭제하지 말아야 할 데이터를 삭제했을 때, 데이터를 복구하기 위해 사용하는 방법이다. 참고 사이트 : https://loklee9.tistory.com/73
🎉 TIP 실행했던 쿼리 시간대 조회 방법
실행했던 쿼리의 시간대를 알기 위해서는 쿼리를 실행한 시간이 30분 이내여야 한다.
SELECT 컬럼1
, 컬럼2
, 컬럼3
, VERSIONS_STARTTIME
, VERSIONS_ENDTIME
, VERSIONS_OPERATION
FROM TB_MH_WORK_RSLT
VERSIONS BETWEEN TIMESTAMP TO_TIMESTAMP('년년/월월/일일 시시:분분:초초', 'RR/MM/DD HH24/MI/SS') AND MAXVALUE
WHERE 절
ORDER BY VERSIONS_ENDTIME
🎉 해결방법 1
DELETE 했던 WHERE 절을 참고하여 아래처럼 조회하면 실수로 삭제했던 데이터가 나온다.
다만, 몇 시간이 흐른 뒤에는 해당 방법으로 복구가 불가능하다.
SELECT *
FROM 원복하고 싶은 테이블명 AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '전으로 돌리고 싶은 시간' MINUTE)
WHERE 절
🎉 해결방법 2
첫 번째, 테이블이 FLASHBACK 할 수 있는 상태로 설정한다.
두 번째, 테이블을 FLASHBACK 한다.
다만, 15분 이상 흐른 뒤에는 해당 방법으로 복구가 불가능하다.
ALTER TABLE 테이블명 ENABLE ROW MOVEMENT
FLASHBACK TABLE 테이블명 TO TIMESTAMP (SYSTIMESTAMP - INTERVAL '전으로 돌리고 싶은 시간' MINUTE)
🎉 해결방법 3
첫 번째, 오라클 휴지통에 삭제한 테이블을 조회한다.
두 번째, DROP 된 테이블을 FALSHBACK 한다.
SELECT * FROM RECYCLEBIN
FLASHBACK TABLE 테이블명 TO BEFORE DROP
👏 결과
시간적 제약이 가장 널널한 것은 해결방법1이 였으며, 근본적인 사고를 막기 위해서는 DELETE, DROP 전 미리 SELECT 로 조회하고 데이터를 확인한 뒤 처리하는 것이 올바르다.