[ORACLE] 오라클 데이터 복구 TIMESTAMP 사용법

오라클(ORACLE) 데이터를 TIMESTAMP를 사용하여 복구

 

데이터베이스를 이용하다보면 실수로 데이터를 삭제하거나, 잘못 업데이트를 하는 경우가 있습니다.

 

commit을 하기전이라면 상관이 없습니다.

 

하지만 commit을 한 이후에 문제를 파악하여 데이터를 복구해야 하는 경우가 생깁니다.

 

이럴때 ORACLE 의 TIMESTAMP를 이용하면 데이터를 복구 할 수 있습니다.

 

TIMESTAMP 사용조건

oracle 9i 이상부터 지원

DB의 설정에 따라서 시간이 오래지난 데이터는 TIMESTAMP로 복구가 불가능합니다.

 

TIMESTAMP 사용법

단위는 SECOND, MINUT, HOUR, DAY 로 지정해서 사용할 수 있습니다.

SYSTIMESTAMP 에서 설정한 시간을 입력하여 데이터를 보여줍니다.

-- 10초전 데이터 조회
SELECT  *  FROM 테이블 AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '10' SECOND)
WHERE 컬럼 = 'A'; -- 필요에 따라서 조건문

-- 10분전 데이터 조회
SELECT  *  FROM 테이블 AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '10' MINUTE)
 
-- 3시간전 데이터 조회 
SELECT  *  FROM 테이블 AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '3' HOUR)

-- 1일전 데이터 조회 
SELECT  *  FROM 테이블 AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '1' DAY)

-- 특정시간 기준으로 데이터 조회
SELECT * FROM USER_TB AS OF TIMESTAMP(TO_DATE('20200605000000', 'YYYYMMDDHH24MISS'));

 

TIMESTAMP 데이터 쉽게 비교하기

어떤 데이터가 변경이 되었는지 확인할 경우

아래와 같이 비교하시면서 보면 확인하기가 편합니다.

현재 데이터와 비교할 데이터를 UNION ALL로 묶어서 보기

-- GOODS_NM 이 선풍기인 데이터를 현재 데이터와 10분전 데이터 비교

SELECT * FROM TEMP_1018 where GOODS_NM = '선풍기'
UNION ALL 
SELECT  *  FROM TEMP_1018 AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '10' MINUTE) where GOODS_NM = '선풍기';

-- 10분전에는 GOODS_QTY 가 77개 인것을 확인

 

TIMESTAMP 데이터 생성, 수정 방법

-- select insert 를 이용하여 삭제된 데이터 처리
INSERT INTO TEMP_1018
SELECT  *  FROM TEMP_1018 AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '10' MINUTE) where GOODS_NM = '선풍기';


-- select update 를 이용하여 변경된 데이터 처리
UPDATE TEMP_1018 a
SET 
	a.GOODS_QTY = (SELECT B.GOODS_QTY FROM TEMP_1018 B AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '10' MINUTE) where a.GOODS_NM = b.GOODS_NM and  b.GOODS_NM = '선풍기')
WHERE a.GOODS_NM ='선풍기'    

댓글

Designed by JB FACTORY