[ORACLE] 오라클 데이터 복구 TIMESTAMP 사용법
- 데이터베이스/Oracle
- 2020. 6. 8.
오라클(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 ='선풍기'
'데이터베이스 > Oracle' 카테고리의 다른 글
[ORACLE] 오라클 뷰(view) 사용법(조회,생성,수정,삭제) (0) | 2020.06.26 |
---|---|
[ORACLE] 오라클 SELECT 중복값 제거 하기(MINUS 연산자) (0) | 2020.06.16 |
[ORACLE] 오라클 NVL, NVL2 사용법 및 차이점(NULL 처리) (0) | 2020.06.06 |
[Oracle] 오라클 버전 확인 방법 (0) | 2020.06.05 |
[ORACLE] 오라클 INSTR 문자 위치 찾기 및 예제 (0) | 2020.06.03 |