반응형
업무를 진행하면서 본인이 혹은 팀내 다른 직원이 DELETE 문을 실행하면서 WHERE 절을 잘 못 걸어 지우면 안되는 데이터들이 지워질 때가 있습니다. COMMIT 전이라면 롤백하면 되지만 COMMIT 후라면, 그리고 지운 데이터가 기준정보라 시스템에 중요 데이터라면 머리가 아찔해집니다. 이런 경우 당황하지말고 TIMESTAMP로 복구가 가능합니다.
실수로 지운 데이터 복구하기
오라클9i 이상 버전부터 가능합니다. 아마 대부분 9i 이상일 겁니다.
-- 10분 전 데이터 조회
SELECT * FROM 테이블명 AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '10' MINUTE)
WHERE 조건
-- 1시간 전 데이터 조회
SELECT * FROM 테이블명 AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '1' HOUR)
WHERE 조건
-- 하루 전 데이터 조회
SELECT * FROM 테이블명 AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '1' DAY)
WHERE 조건
-- 특정 시간 데이터 조회
SELECT * FROM 테이블명 AS OF TIMESTAMP(TO_DATE('20220218120000', 'YYYYMMDDHH24MISS'))
WHERE 조건
위 SQL을 실행해서 DELETE 이전 데이터를 조회합니다.
조회된 데이터를 EDIT 모드, EXCEL, SELECT INSERT문 등 편한 방법으로 다시 INSERT하면 됩니다.
너무 오래된 데이터는 조회되지 않으니 인지하는 순간 바로 진행하시기 바랍니다.
그리드형
'IT > DB' 카테고리의 다른 글
[ORACLE] "May 8, 2022 12:41:37 AM" TO_DATE하기 (0) | 2022.05.12 |
---|---|
[Mybatis] java.lang.RuntimeException: parameter[MI] no set 해결방법 (0) | 2022.04.08 |
[Oracle] 오라클 더 크고, 작은 값 비교와 주의할 점 GREATEST, LEAST(최대/최소값) (0) | 2022.01.18 |
[Oracle] 오라클 시퀀스(Sequence) 생성/수정/삭제/currval/nextval (0) | 2021.12.30 |
[ORACLE] ORA-01732 : 뷰에 대한 조작이 부적합합니다. (0) | 2021.12.22 |
댓글